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相同,不过没有用到红黑树。