Java集合体系架构分为Collection和Map两大集合框架,其中Collection是单列集合的顶级接口,它具有单列存储的特点,即一次只能添加一个元素;而Map则是双列集合的顶级接口。Collection作为顶级接口,它拥有两个子接口List和Set。同时,作为顶级接口它抽取了所有实现类的共有方法。
接下来我们将结合代码来具体学习Collection相关知识。
Collection应知应会
Collection作为顶级接口,它最常见的实现类是ArrayList,LinkedList,HashSet和TreeSet,作为顶级接口它抽取了所有实现类的共有方法,所有实现Collection接口的实现类均可使用这些方法。例如ArrayList,LinkedList,HashSet和TreeSet均可使用如下共有方法。
方法名 | 说明 |
---|---|
boolean add(E e) | 增添数据 |
boolean remove(Object o) | 从集合中移除指定的元素 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
具体实现类为ArrayList的Collection
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//普通输出
System.out.println(collection);
}
具体实现类为LinkedList的Collection
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为LinkedList
Collection<String> collection=new LinkedList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//普通输出
System.out.println(collection);
}
具体实现类为HashSet的Collection
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为HashSet
Collection<String> collection=new HashSet<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//普通输出
System.out.println(collection);
}
具体实现类为TreeSet的Collection
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为TreeSet
Collection<String> collection=new TreeSet<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//普通输出
System.out.println(collection);
}
接下来我们以具体实现类为ArrayList的Collection来举例
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
collection.add("lisi");
//调用remove()方法删除指定数据
collection.remove("lisi");
//普通输出
System.out.println(collection);
}
运行结果:(从运行结果中我们看到调用remove()方法只能删除第一个值为lisi的对象,并且当删除lisi之后,后面三个元素wangwu,zhaoliu和lisi位置会左移,这为我们未来删除重复数据时注意索引的位置,防止漏删)
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//调用clear()方法清空数据
collection.clear();
//普通输出
System.out.println(collection);
}
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//调用contains()方法判断集合中是否存在指定的元素
boolean zhangsan = collection.contains("zhangsan");
System.out.println("集合中存在zhangsan此元素吗?"+zhangsan);
boolean aoao = collection.contains("aoao");
System.out.println("集合中存在aoao此元素吗?"+aoao);
}
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//调用isEmpty()方法判断集合是否为空
boolean empty = collection.isEmpty();
System.out.println("此集合为空吗?"+empty);
//调用clear()方法清空集合元素
collection.clear();
//调用isEmpty()方法判断集合是否为空
boolean empty1 = collection.isEmpty();
System.out.println("此集合为空吗?"+empty1);
}
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//调用size()方法获取集合的长度
int size = collection.size();
System.out.println("集合的长度为:"+size);
//调用clear()方法清空集合元素
collection.clear();
//调用size()方法获取集合的长度
int size1 = collection.size();
System.out.println("集合的长度为:"+size1);
}
由于共有方法中并没有带索引的方法,因此Collection无法使用普通for循环来遍历集合,只能使用普通输出方法,Iterator迭代器遍历和forEach语句遍历集合数据。
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//普通输出方法输出Collection集合
System.out.println(collection);
}
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//forEach语句输出Collection集合,Collection对象的数据类型为String,s相当于collection
for (String s : collection) {
System.out.println(s);
}
}
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("zhaoliu");
//Iterator迭代器输出Collection集合
//由于Collection的数据类型为String,因此Iterator的数据类型也为String
Iterator<String> iterator=collection.iterator();
//iterator.hasNext()的作用是判断当前位置是否存在元素,若存在元素则为true,否则为false
while(iterator.hasNext()){
//iterator.next()的作用是获取当前位置元素,之后指向下一个位置
System.out.println(iterator.next());
}
}
public static void main(String[] args) {
//创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
Collection<String> collection=new ArrayList<>();
//调用add()方法增添数据
collection.add("zhangsan");
collection.add("lisi");
collection.add("wangwu");
collection.add("wangwu");
collection.add("zhaoliu");
collection.add("wangwu");
//Iterator迭代器输出Collection集合
//由于Collection的数据类型为String,因此Iterator的数据类型也为String
Iterator<String> iterator=collection.iterator();
//iterator.hasNext()的作用是判断当前位置是否存在元素,若存在元素则为true,否则为false
while(iterator.hasNext()){
//iterator.next()的作用是获取当前位置元素,之后指向下一个位置
if(iterator.next().equals("wangwu")){
//删除当前元素
iterator.remove();
}
}
//forEach语句输出Collection集合
for (String s : collection) {
System.out.println(s);
}
}
OK!!!Collection介绍完毕!!!