平时用的List entityList = new ArrayList<> 已经向上转型为List了,需要创建位对应的接口,
当需要使用LinkedList / TreeMap的额外的方法的时候,就不能向上转型
Collection接口概括了序列的概念,存放一组对象的方式
文档中写的:“要确保这个Collection包含指定元素” 考虑到set只有在元素不存在的时候才会添加,在使用ArrayList / 任何种类的List中 .add()只是单纯的把它放进去,因为List不在乎是否重复
添加一组元素
一组元素用:Arrays.asList()来表示(可以接受数组或者用逗号分隔的元素列表,并将其转化为一个List对象)
Collections.addAll()方法可以接受一个Collection对象,但是要确保这个collection对象不能为空。
首选方式:
构建一个不包含元素的Collection 然后调用Collections.addAll()这种方式很方便,是首选
当使用Arrays.asList()来当做List,但是这样不好的原因是底层是数组,不可以调整尺寸,如果调用add() / delete() 就会引发去改变数组尺寸的尝试,就会报错 “Unsupported Operation(不支持的操作)”的错误
Collection 在每个槽里面只能保存一个元素。包括List (以特定顺序保存一组元素)和Set(元素不能重复)和 Queue(只允许在容器的一边插入一组元素,另一边移除元素 )
Map可以在一个槽里面保存两个对象,map可以自动调整大小,在map中key _ value的保存顺序并不是他们的插入顺序,因为HashMap实现使用的是一种非常快的算法来控制顺序。
HashMap提供二楼最快的查找技术,没有按照任何明显的顺序来保存其元素。
TreeMap是按照比较结果的升序保存键。
LinkedHashMap是按照插入顺序保存键,同时还保留了HashMap的查询速度。
List
两种类型的List
- 基本的ArrayList:底层是数组,查询快,List的中间插入和移除元素时比较慢。查询快的原因是:每一个地址值和value其实是对应的,这样知道了首坐标,目标坐标很好找
- LinkedList : 链表:包含了下一个value的地址值,通过较低的代价在List中间进行插入和删除操作,提供了优化的顺序访问,LinkedList在随机访问方面比较慢,但是他的特性集较ArrayList更大。
List允许他在创建后添加元素、移除元素、或者自我调整尺寸。是一种可以修改的序列,可以通过
**.contains()**方法来确定某个对象是否在列表中。
**.remove()**方法用来移除一个对象
**.indexOf()**来发现该对象在List中所处位置的索引编号
**.retainAll()**方法是一种有效的交集操作
**.removeAll()**方法移除List中所有的元素(也是依据equals())
**.set()**方法是在指定的索引处(第一个参数),用第二个参数替换整个位置的元素。
**.addAll()**方法是在初始的List的中间插入一个新的列表,Collection中的addAll()是将Collection追加到末尾
.isEmpty是否为空,空:true 非空:false
.clear
.toArray将任意Collection转化为数组,这是一个重载方法,无参的版本返回的是Object数组,如果穿了目标类型,他将产生指定数据的类型,如果参数数组太小放不下List的所有元素的话,.toArray就会创建一个具有合适尺寸的数组
迭代器
是一个对象,作用是遍历 并选择序列中的对象,迭代器被称为轻量级对象:创建它的代价小,Iterator只能单向移动,所以只能用来:
1):使用方法**iterator()**要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。
2):使用**next()**获得序列中的下一个元素
3):使用**hasNext()**检查序列中是否还有元素。
4):使用**remove()**将迭代器新近返回的元素删除。
ListIterator
ListIterator是一个更加强大的Iterator的子类型,他只能用于各种list类的访问。尽管Iterator只能向前移动,ListIterator可以双向移动。它可以产生相对于迭代器在列表中
本文介绍了如何在Java中灵活运用ArrayList和LinkedList,以及Collection接口的使用技巧。重点讲解了如何添加元素、判断元素存在、修改List结构和使用不同Map实现。特别提到了避免数组大小调整的陷阱和ListIterator的强大功能。
102

被折叠的 条评论
为什么被折叠?



