学习笔记之《Java编程思想》第11章 持有对象
1. 使用Arrays.asList()将数组转化为List注意事项
Integer[] integers = {1, 2, 3, 4, 5};
//直接将数组转化为List,其底层表示仍然是数组,因此不能调整尺寸,也就不能进行增删
List<Integer> integerList = Arrays.asList(integers);
//添加操作,运行时报错报错
integerList.add(2);
运行时将会报如下错误

2. List、Set、Map概述
ArrayList和LinkedList都是List类型,它们都是按照存储的顺序保存元素的。两者的不同之处在于执行某些类型的操作时性能,而且LinkedList包含的操作也多于ArrayList。ArrayList随机访问元素的速度较快,而LinkedList的增删速度较快。
HashSet、TreeSet和LinkedHashSet都是Set类型,相同的元素都只保存一次,但是不同的Set实现存储元素的方式也不同。HashSet使用相当复杂的方式来存储元素,这种存储是最快的获取元素的方式。而TreeSet按照比较结果的升序保存对象,LinkedHashSet则按照存储的顺序保存对象。
HashMap、TreeMap和LinkedHashMap都是Map类型。HashMap与HashSet一样,也提供了最快的查找技术;TreeMap按照比较结果的升序保存键值;LinkedHashMap则按照存储的顺序保存键。
3. Collections类中的静态方法sort()与shuffle()
sort()对集合中的元素进行排序,shuffle()随机打乱集合中的元素顺序。
如果集合通过数组转换获取,则底层数组元素的顺序也随之改变:
Integer[] integers = {1, 2, 3, 4, 5};
//直接将数组转化为List,其底层表示仍然是数组,因此不能调整尺寸,也就不能进行增删
List<Integer> integerList = Arrays.asList(integers);
注:如果通过集合的addAll方法,底层数组的元素顺序不会发生改变
Integer[] integers = {1, 2, 3, 4, 5};
List<Integer> integerList2 = new ArrayList<>();
integerList2.addAll(Arrays.asList(integers));
4. 迭代器Iterator
1)使用方法iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。
2)使用next()获取序列中的下一个元素。
3)使用hasNext()检查序列中是否还有元素。
4)使用remove()将迭代器新返回的元素删除。
5)Iterator在调用remove方法前必须先调用next()。

浙公网安备 33010602011771号