第11章:持有对象 泛型 容器 List 迭代器 LinkedList
Stack Set Map Queue
11.9 Set
查找成为了Set中最重要的操作。因此通常都会选择一个HashSet的实现,它专门对快速查找进行了优化。
HashSet使用散列数据结构。TreeSet使用了红黑树数据结构:是有序的。
Set<String> set1 = new HashSet<String>();
Collections.addAll(set1, "A B C D E F G H I J K L".split(" "));
set1.add("M");
System.out.println("H:" + set1.contains("H"));
System.out.println("M:" + set1.contains("M"));
Set<String> set2 = new HashSet<String>();
Collections.addAll(set2, "H I J K L".split(" "));
System.out.println("set2 in set1 : " + set1.containsAll(set2));
System.out.println("set1 : " + set1);
set1.remove("H");
System.out.println("set1 : " + set1);
set1.removeAll(set2);
System.out.println("set1 : " + set1);
11.10 Map
11.11 Queue P269
队列常被当做一种可靠的将对象从程序的某个区域传输到另一个区域的途径。
队列在并发编程中特别重要。因为他们可以安全地将对象从一个任务传输给另一个任务。
LinkedList提供了方法以支持队列的行为。并且它实现了Queue接口。因为可以作为Queue的一种实现。
11.11.1 PriorityQueue
通过提供自己的Comparator来修改顺序。
11.12 Collection和Iterator
C++只用迭代器来表示容器之间的共性。
与底层容器的特定实现解耦。只和对象类型有关。
新程序中不应该使用过时的Vector,HashTable,Stack。