- Collection
- 一、List
- ArrayList(动态数组)
- Vector(动态数组)
- linkedList(链表)
- Stack
- 二、Set
- HashSet
- Map
- HashMap
- Hashtable
- TreeMap
- Iterator
- ListIterator
- Enumeration
- Arrays 和 Collections
Collection是一个接口,它包含了基本操作和属性。Collection 包含了List和Set俩大分支。
一、ListList是一个有序的队列,其中的元素无序,存入顺序有序,可重复的线性结构,其中存放的是泛型实例的地址不是其值,通过地址访问元素,每一个元素都有它的索引。第一个元素的索引值是0。
List的实现类有linkedList、ArrayList、Vector 和 Stack。
- ArrayList 允许任何符合规则的元素插入甚至包括null。每一个ArrayList都有一个初始容量 10 。
每次向容器中增加元素的同时都会进行容器检查,当快溢出时,就会进行扩容操作。 - 线性队列式结构,替代了 vector (动态数组)线程不安全。
- Arrays 工具类也有一个ArrayList类,注意区分。
线性队列式结构(动态数组),线程安全的,方法基本与ArrayList相同,同步过程慢。
linkedList(链表)双向链表,不能随机访问。可以被当做栈、队列或双端队列来使用。
链表式结构(插入、删除较快、但查询较慢)不同步。
Stack 表是后进后出的对象堆栈,线程安全的,继承自Vector。
二、SetSet是一个不允许有重复元素的集合,其中的元素有序,存入顺序无序。
Set的实现类有HashSet和TreeSet,且全部线程不安全。
HashSet依赖于HashMap,它实际上是通过HashMap实现的;
TreeSet依赖于TreeSet,它实际上是通过TreeMap类实现的。
使用哈希算法来存储元素,具有较好的存取、查找特性。
重复时不会继续放入,由哈希表(HashMap 实例)支持。
它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变,此类允许使用 null 元素。
- 不能保证元素的排列顺序(迭代是无序)(存在逻辑顺序)
- 线程不安全。
- 可以包含null
Map是一个映射接口,即key-value键值对。Map中的每一个元素包含 一个key 和key对应的value。一个映射不能包含重复的键;每个键最多只能映射到一个值,当添加重复的 key 时,新的键值对会覆盖老的键值对。
HashMap、TreeMap 和 WeakHashMap 都是继承于 AbstractMap。Hashtable继承于Dictionary,但是它实现了Map接口。
Map中不能应用迭代器,当需要获取所有元素时
- 先获取一个视图,再迭代调用获取函数
- 或者:利用Map.Entry
哈希表结构
非同步
无序
支持null作为键 或值元素
判断键的标准:hashcode + equals
子类:linkedHashMap 保存存入顺序
哈希表结构
同步
不支持null作为键 或值元素
子类:Properties:用来存储键值对型的配置文件信息。可以和IO技术结合
二叉树结构
根据键排序(默认)
也可以根据值的 Comparator排序
Iterator 是一个遍历集合的工具,Collection 的实现类都要实现iterator()函数,返回一个Iterator对象。
ListIteratorListIterator 是专门遍历 List 的
EnumerationEnumeration 的作用和 Iterator 一样,也是遍历集合,但Enumeration只能在 Hashtable、Vector、Stack中使用。
Arrays 和 CollectionsArrays 和 collections 它们是操作数组、集合的俩个工具类。



