Collection 接口介绍
Collection 是单列集合的顶层接口,它的功能是全部单列集合都可以继承使用的。Collection 是一个接口,不能直接创建它的对象,学习它的方法时,可创建其实现类(如 ArrayList)的对象。
Collection 有两个重要的子接口:List 和 Set。List 系列集合添加的元素有序、可重复、有索引(有序指存和取的内容顺序一样);Set 系列集合添加的元素无序、不重复、无索引。
Collection 常用方法
| 方法名称 | 说明 |
|---|---|
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 元素操作示例
// 目的:为了学习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. 判断元素是否包含 |
boolean result = coll.contains("aaa"); |
System.out.println(result); |
// 5. 判断集合是否为空 |
boolean result2 = coll.isEmpty(); |
System.out.println(result2); // false |
// 6. 获取集合的长度 |
int size = coll.size(); |
System.out.println(size); // 2 |
Collection 遍历方式
迭代器遍历
迭代器在 Java 中的类是 Iterator,是集合专用的遍历方式。
- Collection 集合获取迭代器:
| 方法名称 | 说明 |
|---------------------|--------------------------------------|
|Iterator<E> iterator()| 返回迭代器对象,默认指向当前集合的 0 索引 | - Iterator 中常用方法:
| 方法名称 | 说明 |
|---------------------|--------------------------------------|
|boolean hasNext()| 判断当前位置是否有元素,有元素返回 true,没有元素返回 false |
|E next()| 获取当前位置的元素,并将迭代器对象移向下一个位置。|
Iterator<String> it = coll.iterator(); |
while (it.hasNext()) { |
String str = it.next(); |
System.out.println(str); |
} |
细节注意点:
- 报错
NoSuchElementException。 - 迭代器遍历完毕,指针不会复位。
- 循环中只能用一次
next方法。 - 迭代器遍历,不能用集合的方法进行增加或者删除;若要删除,可用迭代器提供的
remove方法,无增加方法。
增强 for 遍历
底层原理是一个 Iterator 迭代器,只有单列集合和数组才能用增强 for 进行遍历。
// 注意点: |
// s 其实就是一个第三方变量,在循环的过程中依次表示集合中的每一个数据 |
for (String s : coll) { |
System.out.println(s); |
} |
特点:修改增强 for 中的第三方变量,不会改变集合中原本的数据。
Lambda 表达式遍历
| 方法名称 | 说明 |
|---|---|
default void forEach(Consumer<? super T> action) | 结合 Lambda 遍历集合 |
// 利用匿名内部类的形式 |
coll.forEach(new Consumer<String>() { |
@Override |
// s 依次表示集合中的每一个数据 |
public void accept(String s) { |
System.out.println(s); |
} |
}); |
// Lambda 表达式 |
coll.forEach(s -> System.out.println(s)); |
底层原理:会自己遍历集合,依次得到每一个元素,把得到的每一个元素,传递给 accept 方法。
595

被折叠的 条评论
为什么被折叠?



