程序设计的一个主要目的就是“将发生变化的东西同保持不变的东西分隔开”。
-
集合(Collection)
一组单独的元素,通常应用了某种规则。在这里,一个List(列表)必需按特的顺序容纳元素,而一个Set(集)不可包涵任何重复的元素。相反,“包”(Bag)的概念未在新的集合库中实现,因为“列表”已经提供了类似的功能。 -
映射(Map)
一系列“键-值”对(这已经在散列表身上得到了充分的体现)。从表象看,这似乎应该成为一个“键-值”对的“集合”,但假若试图按那种方式实现它,就会发现实现过程相当笨拙。这进一步证明了应该分离成单独的概念。另一方面,可以方便的查看Map的某个部分。只需创建一个集合,然后用它表示那一部分即可。这样一来,Map就可以返回自己键的一个Set,一个包含自己值的List或者包含自己“键-值”对的一个List。和数组相似,Map可方便扩充到多个“维”,毋需涉及任何新概念。只需简单的在一个Map里面包含其他Map(后者又可以包含更多的Map,以此类推) -
List(接口)
顺序是List最重要的特性;他可以保证元素按照规定的顺序排列。List为Collection添加了大量方法,以便我们在List中插入和删除元素(只推荐对LinkedList这样做)。List也会生成一个ListIterator(列表反复器),利用它可在一个列表里朝两个方向遍历,同时插入和删除位于列表中部的元素(同样地,只建议对LinkedList这样做) -
ArrayList
由一个数组后推得到的List。作为一个常规用途的对象容器使用,用于替换原先的Vector。允许我们快速访问元素, 但在从列表中部插入和删除元素时,速度却稍嫌慢。一般只应该用ListIterator对一个ArrayList进行向前和向后遍历,不要用它删除和插入元素;与LinkedList相比,他的效率要低很多。 -
LinkedList
提供优化的顺序访问性能,同时可以高效率地在列表中部进行插入和删除操作。但在进行随机访问时,速度却相当慢,此时应换用ArrayList。也提供了addFirst(), addLast(), getFirst(), getLast(), removeFirst(), 以及removeLat()(未在任何接口或基础类中定义),以便将其作为一个规格,队列以及一个双向队列使用。