Java Collection接口解析
Collection接口概述
Collection是Java单列集合的顶层接口,定义了所有单列集合共性的方法。List、Set、Queue等子接口都继承自Collection。它提供了对集合元素的基本操作,如添加、删除、遍历等。
红色为接口,蓝色为实现类。。
List系列集合:添加的元素是有序、可重复、有索引
Set系列集合:添加的元素是无序、不重复、无索引
常用方法分类
Collection接口的方法可分为以下几类:
- 添加元素:
add()
,addAll()
- 删除元素:
remove()
,removeAll()
,clear()
- 查询元素:
contains()
,containsAll()
,isEmpty()
,size()
- 遍历元素:
iterator()
- 转换操作:
toArray()
添加元素示例
add()
方法用于向集合中添加单个元素,addAll()
用于添加另一个集合的所有元素。
Collection<String> coll = new ArrayList<>();
coll.add("Java");
coll.add("Python");Collection<String> otherColl = new ArrayList<>();
otherColl.add("C++");
otherColl.add("Go");coll.addAll(otherColl);
System.out.println(coll); // 输出: [Java, Python, C++, Go]
删除元素示例
remove()
删除指定元素,removeAll()
删除与另一集合的交集,clear()
清空集合。
Collection<String> coll = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
coll.remove("B"); // 移除"B"
System.out.println(coll); // 输出: [A, C, D]Collection<String> toRemove = Arrays.asList("C", "D");
coll.removeAll(toRemove); // 移除"C"和"D"
System.out.println(coll); // 输出: [A]coll.clear(); // 清空集合
System.out.println(coll.isEmpty()); // 输出: true
查询元素示例
contains()
判断元素是否存在,size()
返回集合大小。
Collection<Integer> numbers = new HashSet<>(Arrays.asList(10, 20, 30));
System.out.println(numbers.contains(20)); // 输出: true
System.out.println(numbers.size()); // 输出: 3
遍历集合示例
通过iterator()
获取迭代器,或使用增强for循环遍历。
Collection<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "Ruby"));// 方式1:迭代器
Iterator<String> it = languages.iterator();
while (it.hasNext()) {System.out.println(it.next());
}// 方式2:增强for
for (String lang : languages) {System.out.println(lang);
}
集合与数组转换
toArray()
将集合转换为数组,可指定数组类型。
Collection<String> coll = Arrays.asList("Apple", "Banana");
Object[] array1 = coll.toArray(); // 转为Object数组
String[] array2 = coll.toArray(new String[0]); // 转为String数组
System.out.println(Arrays.toString(array2)); // 输出: [Apple, Banana]
实例:
public class A01_CollectionDemo1 {public static void main(String[] args) {
/*public boolean add(E e) 添加public void clear() 清空public boolean remove(E e) 删除public boolean contains(Object obj) 判断是否包含public boolean isEmpty() 判断是否为空public int size() 集合长度注意点:Collection是一个接口,我们不能直接创建他的对象。所以,现在我们学习他的方法时,只能创建他实现类的对象。实现类:ArrayList
*///目的:为了学习Collection接口里面的方法//自己在做一些练习的时候,还是按照之前的方式去创建对象。Collection<String> coll = new ArrayList<>();//1.添加元素//细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的。//细节2:如果我们要往Set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。// 如果当前要添加的元素已经存在,方法返回false,表示添加失败。// 因为Set系列的集合不允许重复。coll.add("aaa");coll.add("bbb");coll.add("ccc");System.out.println(coll);//2.清空//coll.clear();//3.删除//细节1:因为Collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。//细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false//如果要删除的元素不存在,就会删除失败。System.out.println(coll.remove("aaa"));System.out.println(coll);//4.判断元素是否包含//细节:底层是依赖equals方法进行判断是否存在的。//所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。boolean result1 = coll.contains("bbb");System.out.println(result1);//5.判断集合是否为空boolean result2 = coll.isEmpty();System.out.println(result2);//false//6.获取集合的长度coll.add("ddd");int size = coll.size();System.out.println(size);//3}
}
注意事项
- 部分方法(如
add()
)在不可变集合中会抛出UnsupportedOperationException
remove()
依赖元素的equals()
方法进行匹配- 不同实现类(如ArrayList vs HashSet)对相同方法可能有不同性能表现
通过灵活运用Collection接口的方法,可以高效处理各类集合操作需求。