Collection
List--->LinkedList
--->ArrayList
--->Vector--->Stack
Set---> HashSet
--->TreeSet
Map--->Hashtable
--->HashMap
--->WeakHashMap
s集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,
我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集)、list(列表)和map(映射)。
set和list是继承Collection接口的子接口,map是独立于Collection的。
(1)集(set)
集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简
单的把对象加入集合中,就像往口袋里放东西。
对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不
能有重复对象。
集也有多种变体,可以实现排序等功能,如TreeSet,它把对象添加到
集中的操作将变为按照某种比较规则将其插入到有序的对象序列中。它实现
的是SortedSet接口,也就是加入了对象比较的方法。通过对集中的对象迭
代,我们可以得到一个升序的对象集合。
(2)列表(list)
列表的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开
头和一个结尾,当然,它与根本没有顺序的集是不同的。
列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。
(3)映射(map)
映射与集或列表有明显区别,映射中每个项都是成对的。映射中存储的每
个对象都有一个相关的关键字(Key)对象,关键字决定了 对象在映射中
的存储位置,检索对象时必须提供相应的关键字,就像在字典中查单词一样。
关键字应该是唯一的。
关键字本身并不能决定对象的存储位置,它需要对过一种散列(hashing)
技术来处理,产生一个被称作散列码(hash code)的整数值,
散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起
始位置的,由此确定关键字/对象对的存储位置。理想情况 下,散列处理
应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。