Joshua Bloch 主導重設計,目標:功能完整、易學易用、優於 C++ STL。核心改進:命名更簡潔 (Iterator 取代 Enumeration)、新增行為 (鏈表、隊列、雙端隊列)、平衡功能與複雜度。

圖中只有三大組件:Map、List、Set。每個介面 2-3 種實作,通常只有一種首選 (帶 *)。虛線框=介面、點線框=抽象類、實線框=具體類。點線箭頭=實作介面、雙線箭頭=產生物件。
Collection c = new ArrayList(); // 向上轉型 for (int i=0; i<10; i++) c.add(Integer.toString(i)); Iterator it = c.iterator(); while (it.hasNext()) System.out.println(it.next());
優點:變更實作只需修改創建處 (如改為 new LinkedList()),其餘代碼不變。忽略 Abstract* 抽象類,專注介面與具體實作。
hasNext()/next() 取代 hasMoreElements()/nextElement()。remove():刪除上一個訪問元素,每次 next() 只能調用一次。