
// 数组的缺点:每次使用都需要指定长度,掉率低,操作麻烦
//
// 【java集合体系】:分类:6个接口,1个工具类
// 6个接口: 单列 :Collection,(父接口)
// 1.List 有序(有下标,存储位置)(不能去重)
// 2.set 无序(无法使用下标)(可以去重)
// 2.1 SortedSet
// 多列:Map
// 1.SortedMap
// 一个工具类:Collections
// <Integer>:[泛型]:在集合中用来规定集合的类型
// List:
// 实现类:1.Arraylist 2.LinkedList
List<Integer> list1 =new ArrayList<>();
// 1.添加元素(在末尾添加,指定位置添加)add 可以添加null 并在集合中出现 返回的是布尔类型
// 2.删除元素 remove
// 3.清空集合
// 4。判断是否为空 isEmpty()
// 5.查看集合是否包含某个元素 contains
// 6.查找元素下标 indexOf
// 遍历集合
// 1.for-each循环 元素 集合是整数类型,当有null不能使用,会有空指针异常
for (int i:list1){
System.out.println(i);
}
// 2.下标 长度 list1.size() 获取值 list1.get(i)
for (int i=0;i<list1.size();i++){
System.out.println(list1.get(i));
}
// 迭代器 Iterator 是一个接口 提供了遍历集合的方法
Iterator<Integer> it = list1.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
// LinkList
// 独有的 打印第一个值:list2.getFirst()
// 打印最后一个值:list2.getLast()
// 删除第一个值: list2.removeFirst();
// 删除最后一个值:list2.removeLast();
// ArrayList和LinkList的区别:
// 1.ArrayList底层是数组存储,LinkList底层是双向列表
// 2.ArrayList适合查找,LinkList适合增删
1.ArrayList的元素变动后,变动位置以后的元素都需要变化
由于ArrayList是按照下标存储,所以更适合查找;
2.LinkList的元素变动后,只需改变 变动位置前后的元素;
而LinkList 是区分前后的值,所以不易去查找
// List和数组转换
// 1.集合转数组
Object[] arr=list1.toArray();
// 2.数组转集合
String[] brr={"1","2","2"};
List<String> list3= Arrays.asList(brr);