网站首页 > java教程 正文
Collection接口是List、Set和Queue接口的父接口,通常情况下不被直接使用。Collection接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。
本节将介绍Collection接口中常用的方法,如表1所示。
表1Collection接口的常用方法
方法名称 | 说明 |
boolean add(E e) | 向集合中添加一个元素,如果集合对象被添加操作改变了,则返回 true。E 是元素的数据类型 |
boolean addAll(Collection c) | 向集合中添加集合 c 中的所有元素,如果集合对象被添加操作改变了,则返回 true。 |
void clear() | 清除集合中的所有元素,将集合长度变为 0。 |
boolean contains(Object o) | 判断集合中是否存在指定元素 |
boolean containsAll(Collection c) | 判断集合中是否包含集合 c 中的所有元素 |
boolean isEmpty() | 判断集合是否为空 |
Iterator<E>iterator() | 返回一个 Iterator 对象,用于遍历集合中的元素 |
boolean remove(Object o) | 从集合中删除一个指定元素,当集合中包含了一个或多个元素 o 时,该方法只删除第一个符合条件的元素,该方法将返回 true。 |
boolean removeAll(Collection c) | 从集合中删除所有在集合 c 中出现的元素(相当于把调用该方法的集合减去集合 c)。 如果该操作改变了调用该方法的集合,则该方法返回 true。 |
boolean retainAll(Collection c) | 从集合中删除集合 c 里不包含的元素(相当于把调用该方法的集合变成该集合和集合 c 的交集), 如果该操作改变了调用该方法的集合,则该方法返回 true。 |
int size() | 返回集合中元素的个数 |
Object[] toArray() | 把集合转换为一个数组,所有的集合元素变成对应的数组元素。 |
注意:以上方法完全来自于JavaAPI文档,读者可自行参考API文档来查阅这些方法的详细信息。读者无需硬性记忆这些方法,可以和实际生活结合记忆。集合类就像容器,现实生活中容器的功能,就是添加对象、删除对象、清空容器和判断容器是否为空等,集合类为这些功能都提供了对应的方法。
例1
经过前面的介绍,我们知道Collection是非常重要的一个接口,在表1中列出了其常用方法。本案例将编写一个简单的程序,演示如何使用Collection接口向集合中添加方法。具体实现代码如下:
public static void main(String[] args) {
ArrayList list1 = new ArrayList(); // 创建集合 list1
ArrayList list2 = new ArrayList(); // 创建集合 list2
list1.add("one"); // 向 list1 添加一个元素
list1.add("two"); // 向 list1 添加一个元素
list2.addAll(list1); // 将 list1 的所有元素添加到 list2
list2.add("three"); // 向 list2 添加一个元素
System.out.println("list2 集合中的元素如下:");
Iterator it1 = list2.iterator();
while (it1.hasNext()) {
System.out.print(it1.next() + "、");
}
}12345678910111213复制代码类型:[java]
由于Collection是接口,不能对其实例化,所以上述代码中使用了Collection接口的ArrayList实现类来调用Collection的方法。add()方法可以向Collection中添加一个元素,而调用addAll()方法可以将指定Collection中的所有元素添加到另一个Collection中。
代码创建了两个集合list1和list2,然后调用add()方法向list1中添加了两个元素,再调用addAll()方法将这两个元素添加到list2中。接下来又向list2中添加了一个元素,最后输出list2集合中的所有元素,结果如下:
list2 集合中的元素如下:
one、two、three、12复制代码类型:[java]
例2
创建一个案例,演示Collection集合中size()、remove()和removeAll()方法的应用。具体代码如下:
public static void main(String[] args) {
ArrayList list1 = new ArrayList(); // 创建集合 list1
ArrayList list2 = new ArrayList(); // 创建集合 list2
list1.add("one");
list1.add("two");
list1.add("three");
System.out.println("list1 集合中的元素数量:" + list1.size()); // 输出list1中的元素数量
list2.add("two");
list2.add("four");
list2.add("six");
System.out.println("list2 集合中的元素数量:" + list2.size()); // 输出list2中的元素数量
list2.remove(2); // 删除第 3 个元素
System.out.println("\nremoveAll() 方法之后 list2 集合中的元素数量:" + list2.size());
System.out.println("list2 集合中的元素如下:");
Iterator it1 = list2.iterator();
while (it1.hasNext()) {
System.out.print(it1.next() + "、");
}
list1.removeAll(list2);
System.out.println("\nremoveAll() 方法之后 list1 集合中的元素数量:" + list1.size());
System.out.println("list1 集合中的元素如下:");
Iterator it2 = list1.iterator();
while (it2.hasNext()) {
System.out.print(it2.next() + "、");
}
}1234567891011121314151617181920212223242526复制代码类型:[java]
list2集合在调用remove(2)方法删除第3个元素之后剩下了two和four。list1.removeAll(list2)语句会从list1中将list1和list2中相同的元素删除,即删除two元素。最后输出结果如下:
list1 集合中的元素数量:3
list2 集合中的元素数量:3
removeAll() 方法之后 list2 集合中的元素数量:2
list2 集合中的元素如下:
two、four、
removeAll() 方法之后 list1 集合中的元素数量:2
list1 集合中的元素如下:
one、three、123456789复制代码类型:[java]
注意:retainAll()方法的作用与removeAll()方法相反,即保留两个集合中相同的元素,其他全部删除。
编译上面程序时,系统可能输出一些警告提示,这些警告是提示用户没有使用泛型来限制集合里的元素类型,读者暂时不要理会这些警告,后面我们会详细介绍泛型编程。
在传统模式下,把一个对象“丢进”集合中后,集合会忘记这个对象的类型。也就是说,系统把所有的集合元素都当成Object类型。从Java5以后,可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类型。
猜你喜欢
- 2024-10-14 Java API接口命名规范(java接口命名规则)
- 2024-10-14 Java常用的API总结(java中的api使用手册)
- 2024-10-14 java使用apache poi操作word文档(java api doc)
- 2024-10-14 关于Java API应用技巧(java常用api汇总)
- 2024-10-14 java与es8实战:Java API Client有关的知识点串讲
- 2024-10-14 Java Scripting API 使用示例(java script功能)
- 2024-10-14 springboot-如何集成Swagger3生成接口文档
- 2024-10-14 Java String类(java string类型比较)
- 2024-10-14 一款零注解侵入的 API 文档生成工具,你用过吗?
- 2024-10-14 Java 文档注解最全详解,建议收藏!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)