前言
Collection是单列集合的顶层接口,所有方法被List和Set系列集合共享
一、常用方法
方法名称 | 说明 |
---|---|
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的遍历方式
1.迭代器遍历
迭代器不依赖索引;
迭代器在Java中的类Iterator,迭代器是集合的专用遍历方式
Collection集合获取迭代器
方法名称 | 说明 |
---|---|
Iterator iterator() | 返回迭代器对象,默认指向当前集合的0索引 |
Iterator中常用方法
方法名称 | 说明 |
---|---|
boolean hasNext() | 判断当前位置是否有元素 ,有元素返回true,没有元素返回false |
E next | 获取当前位置的元素,并将迭代器对象一项下一个位置 |
public class Demo2 {
public static void main(String[] args) {
Collection<String> coll=new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
coll.add("ddd");
Iterator<String> it=coll.iterator();
while (it.hasNext()){
String str = it.next();
System.out.println(str);
}
}
}
注意点:
如果当前没有元素,还要获取,报错NoSuchElementException
迭代器遍历完毕,指针不会复位
循环中只能用一次next方法
迭代器遍历时,不能用集合的方法进行增加或者删除
2.增强for遍历
- 增强for的底层就是迭代器,为了简化迭代器的代码书写的,内部原理其实就是Iterator迭代器
- 所有单列集合和数组才能用增强for进行遍历
格式:
for(元素数据类型 变量名; 数组或集合){
}
public class forDemo {
public static void main(String[] args) {
Collection<String> coll=new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
coll.add("ddd");
for (String s:coll) {
System.out.println(s);
}
}
}
注意点:
1.修改增强for中的变量,不会改变集合中原本的数据
for(String s:coll){
s="q"; //不会改变集合中原有的数据
}
3.Lambda表达式遍历
JDK8开始的新技术Lambda表达式,以中国更简单、更直接的遍历集合的方式
方法名称 | 说明 |
---|---|
default void forEach(Consumer<? super T> action) | 组合lambda遍历集合 |
public class lambdaDemo {
public static void main(String[] args) {
Collection<String> coll=new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
coll.add("ddd");
//利用匿名内部类的方式进行遍历
coll.forEach(new Consumer<String>() {
@Override
//s依次表示集合中的每一个数据
public void accept(String s) {
System.out.println(s);
}
});
//Lambda表达式
coll.forEach((String s)->{
System.out.println(s);
});
//更简化Lambda版本
coll.forEach(s-> System.out.println(s));
}
}