目录
- 集合体系结构
- Collection遍历方式
- 迭代器遍历
- 总结
- 增强for遍历
- 增强for细节
- Lambda表达式遍历
- 总结
集合体系结构
list系列集合:添加的元素式有序,可重复,有索引的
这里的有序式存取的格式式有序的,怎么存入怎么取出
set系列集合:添加的元素式无序,不重复,无索引
不重复:表示集合中不能存储重复的元素由此得出可以用这个去重
无索引:不能通过索引获得元素
Collection是一个接口
public static void main(String[] args) {
//Collection是一个接口 接口不能直接创建对象
//只能创建实现类对象 就是实现他的
//ArrayList
Collection<String>coll=new ArrayList<>();
//添加元素
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
System.out.println(coll);
//[aaa, bbb, ccc]
//细节1 list太你家元素的方法永远返回true 因为list允许重复
//细节2 set添加元素 如果添加已存在的元素方法返回false因为set不允许重复
//coll.clear();
//System.out.println(coll);
//[]打印结果
//表示清空
//3 删除
coll.remove("aaa");
System.out.println(coll);
//[bbb, ccc] 返回值
//因为Collection里面定义的是共性方法,所以不能通过索引删除,只能通过元素对象删除
//方法有一个布尔值返回
//如果删除失败表示删除的元素不存在
//判断元素是否存在
//contains方法底层是用的equals方法比较的 如果要比较自定义类对象 一定要再javabean类中重写equals方法.因为默认使用的是object的equals方法而他默认比较的是地址重写后才能比较对象属性
boolean contains = coll.contains("aaa");
System.out.println(contains);//返回值false因为aaa不存在
boolean empty = coll.isEmpty();
System.out.println(empty);//false
int size = coll.size();
System.out.println(size);//2
}
Collection遍历方式
为什么要学遍历方式 因为 Collection下面的set方法不能用索引遍历但是list可以.
迭代器遍历
迭代器不依赖索引
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();
//迭代器好比一个指针 默认指向0索引元素
//这个判断集合是否有元素
while(it.hasNext()){
String str = it.next();
//这个是获取元素 并且移动指针到下一个元素
System.out.println(str);
//aaa
//bbb
//ccc
}
}
当迭代器已经指向最后一个元素如果再调用next获取元素的话就会报错NoSuchElementException
迭代器遍历完毕指针不会复位,如果再次调用hasNext就会返回false因为后面没有元素,如果要二次遍历需要重新获取一个迭代器对象
迭代器在遍历过程中的时候不能用集合方法添加和删除(equals)如果非要进行删除操作可以迭代器提供的remove方法.如果要增加暂时没有办法
总结
增强for遍历
public static void main(String[] args) {
Collection<String>coll=new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
//s是第三方变量 在循环的过程中依次白哦是集合中的每一个数据
for(String s:coll){
System.out.println(s);
//aaa
//bbb
//ccc
}
}
增强for细节
由此证明他只是一个第三方存储变量
Lambda表达式遍历
public static void main(String[] args) {
Collection<String> coll=new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
//匿名内部类方法
//forEach底层原理 他内部也相当于用了一个普通的for循环 把得到的每个元素传递给下面的accept方法
//s表示集合中的每个元素
/* coll.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
//aaa
//bbb
//ccc
}
});*/
//lambds方法
coll.forEach(s-> System.out.println(s));
//aaa
//bbb
//ccc
}