学习笔记之《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()。

 

posted @ 2020-09-19 21:44  it00zyq  阅读(99)  评论(1)    收藏  举报