各个容器类的关系
使用指南
Queue
单端队列数据结构(先进先出),链式储存。
Queue<String> a = new LinkedList<String >();
// 队列尾部添加元素
a.offer("one");
a.offer("two");
// 队列前端删除元素
a.poll();
Deque
双端队列数据结构(可以两端添加和删除元素),链式储存。
Deque<String> a = new LinkedList<String >();
// 队尾添加元素
a.offer("one");
a.offer("two");
// 队前添加元素
a.offerFirst("three");
// 队尾删除元素
a.pollLast();
Stack
栈数据结构,先进先出。有两种实现方法。它们略有不同。但都能实现先进先出。
1. 链式栈
名义上使用Deque接口,实际使用pop和push方法。
Deque<String> a = new LinkedList<String >();
a.push("1");
a.push("2");
a.push("3");
a.push("4");
a.pop();
System.out.println(a.toString());
// 返回
[3,2,1]
2. 顺序栈
Stack<String> a = new Stack<String>();
a.push("1");
a.push("2");
a.push("3");
a.push("4");
a.pop();
System.out.println(a.toString());
// 返回
[1,2,3]
顺序列表
简单的线性序列容器。顺序储存。
1. ArrayList
ArrayList<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
a.add("3");
a.add("4");
a.remove(0);
2. Vector
Vector
Set
无序集合容器,特点是可以快速判断集合中是否存在某个元素。还可以快速删除已知值的元素。
它有两种实现方法。
1. HashSet
底层是散列表(哈希算法)数据结构
Set<String> a = new HashSet<String>();
a.add("1");
a.add("2");
a.add("3");
// 删除某元素
a.remove("2");
System.out.println(a.contains("2"));
2. TreeSet
底层是平衡二叉树数据结构。如果使用Set接口则于HashSet用法完全一致。只是底层实现不一样而已。
Set<String> a = new TreeSet<String>();
Map
一种关联容器接口,有每一个键(key)都有唯一对应的值(value)。它有两种底层实现。
1. HashMap
底层为散列表数据结构。
Map<Integer, String> a = new HashMap<Integer, String>();
a.put(1, "a");
a.put(2, "b");
a.put(33, "c");
a.put(4, "d");
for( Integer key : a.keySet()){
System.out.println(key.toString() + ":" + a.get(key));
}
// 返回
1:a
33:c
2:b
4:d
2. TreeMap
底层为红黑树数据结构。
Map<Integer, String> a = new TreeMap<Integer, String>();
a.put(1,"a");
a.put(2, "b");
a.put(33, "c");
a.put(4, "d");
for( Integer key : a.keySet()){
System.out.println(key.toString() + ":" + a.get(key));
}
// 返回
1:a
2:b
4:d
33:c