在程序运行的过程中,很多时候需要将对象暂时存储在一个容器中统一管理,之后需要时再将对象取出。要使用什么样的容器依设计需求而定,可以使用循序有索引的链表(List)结构来存储对象,或是使用不允许重复相同对象的集合(Set)结构,也可以使用“键-值”(Key-Value)存取的Map。
一、List接口
1. ArrayList
使用数组结构实现List数据结构,数组的特性是可以使用索引来快速指定对象的位置,所以对于快速的随机取得对象来说,使用ArrayList可以得到较好的效率。若要从中间做删除或插入对象的动作,会需要移动后段的数组元素以重新调整索引顺序,所以速度上就会慢很多。
2. LinkedList
使用链表来实现List接口,在进行插入与删除动作时有较好的效果,适合用来实现堆栈(stack)与队列(Queue).
二、Set接口
1.HashSet
不依put进去的顺序排序,而LinkedHashSet是依据put对象时的顺序排序。
2.TreeSet
依字典顺序排序。
3.EnumSet
依枚举的顺序排序。
三、Map接口
Map中的每一个键都是唯一的,不能有重复的键。
1.HashMap
在使用values()所返回的Collection对象,其内含对象之顺序不为当初加入对象之顺序,而使用LinkedHashMap类时,在使用values()所返回的Collection对象,其内含对象之顺序即为当初加入对象之顺序
2.TreeMap
依键的字典顺序来排列插入的对象是TreeMap默认的。
3.EnumMap
EnumMap将根据枚举的顺序来维护对象的排列顺序。