集合:
单列集合:Collection
双列集合:Map
单列集合:每次添加只添加一个
双列集合:每次添加添加一对
list系列集合:添加的元素是有序(指的是存和取的顺序是有序的不是排序)、可重复、有索引的
Set系列集合:添加的元素是无序(指存的和取的顺序有可能不一样)、不重复、无索引
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的
add(E e):添加,clear():清除,remove():删除(这里的remove是不能根据索引删的因为父类Collection是共性的,set是没索引的)
contains(object obj):判断当前集合中是否包含给定的对象
isEmpty():判断当前集合是否为空,size():返回元素个数
//注意点:Collection是一个接口,我们不能直接创建他的对象
Collection <String> coll = new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
System.out.println(coll);
coll.clear();
System.out.println(coll);
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
coll.remove("bbb");
System.out.println(coll);
System.out.println("-------------");
System.out.println(coll.contains("aaa"));
输出:
注意点:
细节:contains底层是依赖equals方法进行判断是否存在的。
所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。
如果存的是自定义对象,没有重写equals方法,那么默认使用object类中的equals方法进行判断,
而object类中equals方法,依赖地址值进行判断
equals重写:
Collection的遍历方式:
1.迭代器遍历
2.增强for遍历
3.lambda表达式遍历
//迭代器遍历:
Collection <Integer> arr = new ArrayList<>();
arr.add(111);
arr.add(222);
arr.add(333);
//Iterator 迭代器,hasNext判断指针域是否为空
Iterator<Integer> it = arr.iterator();
while(it.hasNext()){
System.out.println(it.next()); //输出并移动
}
增强for遍历
增强for的底层就是迭代器,为了简化迭代器的代码书写的。
它是IDK5之后出现的,其内部原理就是一个Iterator迭代器
所有的单列集合和数组才能用增强for进行遍历。
格式: for(元素的数据类型 变量名:数组或者集合){
}
Collection <String> coll1 = new ArrayList<>();
coll1.add("张三");
coll1.add("李四");
coll1.add("王五");
for(String s : coll1){ //快捷键:coll1.for
System.out.println(s);
}
//Lambda表达式遍历:
Collection <String> coll2 = new ArrayList<>();
coll2.add("zhangsan");
coll2.add("lisi");
coll2.add("wangwu");
coll2.forEach(s -> System.out.println(s));
输出结果:
List集合的特点
有序:存和取的元素顺序一致
有索引:可以通过索引操作元素
可重复:存储的元素可以重复
collection的方法List都继承了
List集合因为有索引,所以多了很多索引操作的方法。
例如:add(int index,E e):在指定位置插入元素,remove(int index):删除指定索引的元素,返回被删除的元素
set(int index,E e):修改指定索引的元素,返回被修改的元素,get(int index):返回指定索引的元素
List<String> list = new ArrayList<>(); //List也是接口所以不能new LIst
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);
list.add(1,"qqq");
System.out.println(list);
list.remove("aaa");
System.out.println(list);
//手动装箱remove
List<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
Integer i = Integer.valueOf(1);
arr.remove(i);
System.out.println(arr);
//List的遍历方式:在Collection的基础上还有普通for循环,列表迭代器遍历
//列表迭代器:(和迭代器的区别是额外多了个方法:可以添加元素(add),但是要用迭代器添加不然会报错)
ListIterator <String> it = list.listIterator();
while(it.hasNext()){
System.out.println(it.next());
}