首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 集合框架核心區別:Collection 接口 vs Collections 工具類

     編輯:Java 綜合教學

Java 集合框架核心區別:Collection 接口 vs Collections 工具類

初學者極易混淆 Collection (單數、介面) 與 Collections (複數、工具類)。本文從定義、層級、核心方法、使用場景四個維度徹底釐清。

一、Collection — 集合層級的根介面

  • 定義:java.util.Collection 是集合框架的**頂層介面** (除 Map 外)
  • 地位:定義通用操作契約 — add/remove/contains/size/iterator/stream 等
  • 直接子介面:List (有序、可重複)、Set (無序、唯一)、Queue (佇列)
  • 主要實現類:
    • List: ArrayList, LinkedList, Vector, Stack
    • Set: HashSet, LinkedHashSet, TreeSet
    • Queue: PriorityQueue, ArrayDeque
Collection (介面)
├─ List (介面)
│  ├─ ArrayList
│  ├─ LinkedList
│  ├─ Vector
│  │  └─ Stack
└─ Set (介面)
   ├─ HashSet
   ├─ LinkedHashSet
   └─ TreeSet

二、Collections — 集合操作的工具類

  • 定義:java.util.Collections 是 **final 工具類**,不可實例化 (私有構造子)
  • 核心價值:提供 **靜態多態方法** 操作實現 Collection 介面的物件
  • 經典方法:
    • 排序:sort(List), sort(List, Comparator)
    • 查找:binarySearch(List, key), max/min(Collection)
    • 填充/複製:fill(List, obj), copy(dest, src)
    • 反轉/打亂:reverse(List), shuffle(List)
    • 同步包裝:synchronizedList/Set/Map()
    • 不可變視圖:unmodifiableList/Set/Map()
    • 單例集合:singletonList/Set/Map()

三、代碼對比演示

import java.util.*;

public class CollectionVsCollections {
    public static void main(String[] args) {
        // 1. Collection 多態引用
        List list = new ArrayList<>();  // List 實現 Collection
        
        double[] data = {112, 111, 23, 456, 231};
        for (double d : data) list.add(d);
        
        // 2. Collections 工具類操作
        Collections.sort(list);  // 自然排序 (升序)
        
        // 3. 遍歷輸出
        for (Double d : list) {
            System.out.println(d);  // 23.0, 111.0, 112.0, 231.0, 456.0
        }
        
        // 4. 更多 Collections 實用操作
        Collections.shuffle(list);           // 隨機打亂
        Collections.reverse(list);           // 反轉
        Double max = Collections.max(list);  // 最大值
        int idx = Collections.binarySearch(list, 112.0); // 二分查找 (需有序)
        
        // 5. 同步包裝 (執行緒安全視圖)
        List syncList = Collections.synchronizedList(new ArrayList<>());
        
        // 6. 不可變視圖 (防禦性編程)
        List unmod = Collections.unmodifiableList(list);
        // unmod.add(1.0); // 拋出 UnsupportedOperationException
    }
}

四、核心差異總結表

維度Collection (介面)Collections (工具類)
類型介面final class
實例化透過實現類 new ArrayList()不可實例化 (私有構造子)
方法性質實例方法 (多態調用)靜態方法 (工具調用)
核心職責定義集合通用契約提供演算法與包裝操作
繼承關係List/Set/Queue 繼承它無繼承,獨立工具類
記憶口訣單數 = 介面複數 = 工具類

五、常見面試陷阱

  1. Q: Collection 有無 get(int index) 方法?
    A: 無。List 子介面才有。Set 無索引概念。
  2. Q: Collections.sort() 要求什麼?
    A: List 元素需實作 Comparable,或傳入 Comparator。
  3. Q: Collections.synchronizedList() 回傳什麼?
    A: 執行緒安全的 List 視圖,內部每個方法加 synchronized,迭代時需手動同步。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved