- Java Collction 设计策略
 - 具体的集合类
 
Java 采用如下策略:
Collection 是 Java Collection Framework 的 super interface.
Collection 核心方法:
public interface Collection<E> extends Iterable<E> {    boolean add(E element);    Iterator<E> iterator();    // other methods ...}public interface Iterable<E> {    Iterator<E> iterator();}注:add() -- 增iterator() -- 迭代器可以完成:查、删操作.
Iterator 定义:
public interface Iterator<E> {    E next();    boolean hasNext();    void remove();}Iterator 用于 loop:
Collection<String> c = ...;Iterator<String> iter = c.iterator();while (iter.hasNext()) {    String element = iter.next();    // do something with element}// Java SE 5.0 for-each loop// 任何实现了 Iterable 接口的对象一起工作,都支持 for-each 语法for (String element : c) {    // do something with element}Full Java Collections:


通过测试代码介绍 Java 核心的集合类的使用.
LinkedList 与 ListIteratorLinkedList: ordered collection(doubly linked list in Java). 它除了拥有普通型的迭代器,还拥有一个增强型迭代器(ListIterator).
ListIterator: 双向迭代器,而且支持:add() 操作.
interface ListIterator<E> extends Iterator<E> {    void add(E element);    E PRevious();    boolean hasprevious();}测试代码:
public class ListsTest {    public static void main(String[] args) {        List<String> staff = new LinkedList<String>();        staff.add("Amy");        staff.add("Bob");        staff.add("Carl");        System.out.println(staff);  // [Amy, Bob, Carl]        // 测试 iterator        // !!!!!迭代器的行为可以想象下:光标 |ABC A|BC AB|C ABC|        Iterator<String> iter = staff.iterator();        // 要点1: 调用 remove() 必须调用 next()[next 和 remove 强关联]        // iter.remove();           // java.lang.IllegalStateException        // 要点2: 禁止重复 remove()        // iter.remove();        // iter.remove();           // java.lang.IllegalStateException        // 要点3: 删除操作        Iterator<String> iter2 = staff.iterator();        String first = iter2.next();        iter2.remove();             // 删除第一个元素        String second = iter2.next();        iter2.remove();             // 删除第二个元素        System.out.println(staff);  // [Carl]        // 测试 ListIterator        ListIterator<String> listIter = staff.listIterator();        listIter.add("Tom");        listIter.add("Jerry");        listIter.next(); // skip past first element        listIter.add("Juliet");        System.out.println(staff);  // [Tom, Jerry, Carl, Juliet]        while (listIter.hasNext()) {            listIter.next();        }        listIter.add("Jetty");        System.out.println(staff);  // [[Tom, Jerry, Carl, Juliet, Jetty]    }}ArrayListSetSet 两个常用的实现: HashSet 和 TreeSet.TreeSet 的元素必须实现 Comparable, 或者初始化时 提供一个比较器。
Queue 和 DequeQueue: 队列. 提供 add(offer), remove(poll), element(peek).Deque: 双端队列. 扩展自 Queue, 提供 head 和 tail 的add(offer), remove(poll), get(peek)操作.Deque的典型实现: ArrayDeque 和 LinkedList.
PriorityQueuePriorityQueue: 优先队列,要求元素是 Comparable 或者提供 Comparator.
MapMap 的两个常用实现: HashMap 和 TreeMap.Map 的三个视图.
Set<K> keySet();Collection<V> values();Set<Map.Entry<K, V>> entrySet(); // Map 其实是利用Set 实现的,其实就是 元素是 Map.Entry 类型的 Set新闻热点
疑难解答