容器:Collection,List,ArrayList, LinkedList, Set
容器和数组的区别:
数组:从效率和类型检查的角度讲,数组是最好的,但是数组长度一旦确定不可更改,因此不灵活。
容器:一种灵活的,容量可以随时扩充的容器来装载我们的对象。
容器的简单结构:


1.Collections:容器的顶层接口

迭代器:
使用迭代器时,分三步走策略:
- 第一步:获取对象
- 第二步:判断是否存在下一个
- 第三步:获取元素
Iterator和ListIterator区别
- ListIterator有add()方法,可以向List中添加对象,而Iterator不能
- ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
- ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
- 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。
2.List接口:有序(索引),可重复

List接口的实现类:
- ArrayList: 特点:根据索引进行查询,遍历效率高,增删效率低,涉及到数据的拷贝问题

- LinkedList: 特点:做增删效率高,遍历|根据索引查询效率低

3.Set:无序,不可重复的,会实现去重效果
特点: 查询效率高,增删效率高,但是无序
HashSet :哈希表实现(数组+链表+红黑树)
链表:链表是一种数据结构,和数组同级。是LinkedList的实现原理。
链表是一种线性表,由节点组成,每个节点只有他自己知道下一个节点的存储位置,添加节点是从右往左的——每个节点有两个成员:储存的对象、对下一个节点的引用。

红黑树:一种数据结构
当元素个数到达八个时链表转红黑树。
Hashset和treeset 的类结构图:


浙公网安备 33010602011771号