Java容器中共有两个接口,分别是Collection和Map。Collection用于存放多个 “单个对象” ,而Map用于存放多个 “两个对象(键值对)” 。
Collection
java.uti.Collection框架:
介绍
Collection是存放单个对象的容器。 Collection里只能存放对象,不能存放基本类型。对于基本类型(boolean, int, long, float, double),需要将其包装成对象类型后(Boolean, Integer, Long, Float, Double)才能放到容器里,不过编译器已经帮我们完成了打包和解包的操作。所以可以直接写list.add(1),而不用list.add(Integer.valueOf(1))
List
- ArrayList: 基于数组实现的可变数组,非线程安全。
- Vector: 和ArrayList类似,区别是通过synchronized实现了线程安全,但效率较低。
- LinkedList: 双向链表
Queue
- LinkedList: 实现了双端队列
Deque、FIFO队列Queue。 - ArrayDeque: 基于循环数组实现了双端队列
Deque、FIFO队列Queue。官方建议使用该类作为Queue和Stack的默认实现。
Set
- HashSet: 基于
HashMap实现的集合。元素的遍历顺序和插入顺序不一致。 - LinkedHashSet: 基于
LinkedHashMap实现的集合。元素的遍历顺序和插入顺序一致。 - TreeSet: 基于
TreeMap实现的集合。元素有序的,顺序是按照key的自然顺序或者是定义的Comparator。
Map
java.uti.Map框架:
介绍
Map是存放键值对的容器。
- HashMap:基于数组、链表、红黑树实现的键值对类型的数据结构,非线程安全。元素的遍历顺序和插入顺序不一致。
- HashTable:和
HashMap类似,但是线程安全,不过效率较低,不建议使用。建议用ConcurrentHashMap、Collections.synchronizedMap(new HashMap())代替。 - LinkedHashMap:基于
HashMap和LinkedList实现的Map。可以实现元素遍历顺序和插入顺序一致。也可以实现元素的遍历顺序和访问顺序一致。 - TreeMap:基于红黑树实现的
Map,元素有序的,顺序是按照key的自然顺序或者是定义的Comparator。 - WeakHashMap:
WeakHashMap也是一种Map,其中的Entry可以JVM自动清除释放。其余的操作和HashMap相同,不过没有用到红黑树。