// 数组的缺点:每次使用都需要指定长度,掉率低,操作麻烦 // // 【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);