Collection是单列集合的祖宗接口
list集合:有序,可重复,有索引。
set集合:无序,不可重复,无索引。(可用来去重)
Collection的抽象方法
public boolean add(E e) 添加对象到集合中
public void clear() 清空集合
public boolean remove(E e) 把给定对象在当前集合中删除
public boolean contains(Object o) 当前集合是否包含给定对象
***(判断==是地址,可以重写equals)
public boolean isEmpty() 判断集合是否为空
public int size() 返回集合中元素的个数,或集合的长度
Collection遍历方式
迭代器遍历(不依赖于索引)
Collection集合获取迭代器
iterator <E> iterator() 返回迭代器对象,默认指向当前集合的0索引
iterator 方法:
boolean hasNext() //判断当前指向是否有元素
E.next() //获取当前对象,并指向下一个元素
E.remove(); //去除当前对象
import java.util.Collection;
import java.util.Iterator;
public class Excp {
public static void main(String[] args) {
Collection<String> coll=new ArrayList();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
Iterator<String> it= coll.iterator();
while(it.hasNext()){
String str= it.next();
System.out.println(str);
}
}
}
注意点:
1)迭代器更新完后指针不会复位,可重新获取迭代器复位
2)迭代器内不可出现多个next方法,必要可或者指针。
3)迭代器在遍历过程中,不能用集合方法去除或添加元素(触发并发修改异常),可以用迭代器方法去除,无法添加。
4)迭代器当前指向没有元素还要强行获取,会报NoSuchElementExpection
增强for遍历(只能用于单列集合和数组)
注意增强for遍历过程中s仅仅是第三方变量,修改不会影响集合本身
public class Excp {
String name;
@Override
public String toString() {
return this.name;
}
public static void main(String[] args) {
Collection<String> coll=new ArrayList();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
coll.add("ddd");
coll.add("eee");
for(String s:coll){
s="ddd";
}
System.out.println(coll);
}
}
lamda表达式遍历
看底层源码理解
代码如下:
public class Excp {
public static void main(String[] args) {
Collection<String> coll=new ArrayList();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
coll.add("ddd");
coll.add("eee");
coll.forEach((s)->{System.out.println(s);});
}
}
未完待续2022 /12 /22。。。。。。