Java集合框架概述 #

一、集合框架概述 #

集合框架是Java提供的一套用于存储和操作对象的标准API。

1.1 集合框架优点 #

  • 统一的API
  • 高性能实现
  • 减少编程工作量

1.2 集合框架体系 #

text
Iterable
└── Collection
    ├── List(有序、可重复)
    │   ├── ArrayList
    │   ├── LinkedList
    │   └── Vector
    ├── Set(无序、不可重复)
    │   ├── HashSet
    │   ├── LinkedHashSet
    │   └── TreeSet
    └── Queue(队列)
        ├── LinkedList
        └── PriorityQueue

Map(键值对)
├── HashMap
├── LinkedHashMap
├── TreeMap
└── Hashtable

二、Collection接口 #

2.1 基本方法 #

java
public interface Collection<E> {
    // 添加
    boolean add(E e);
    boolean addAll(Collection<? extends E> c);
    
    // 删除
    boolean remove(Object o);
    boolean removeAll(Collection<?> c);
    void clear();
    
    // 查询
    boolean contains(Object o);
    boolean containsAll(Collection<?> c);
    boolean isEmpty();
    int size();
    
    // 转换
    Object[] toArray();
    <T> T[] toArray(T[] a);
    
    // 遍历
    Iterator<E> iterator();
}

2.2 使用示例 #

java
Collection<String> collection = new ArrayList<>();

// 添加元素
collection.add("A");
collection.add("B");
collection.add("C");

// 判断
System.out.println(collection.size());      // 3
System.out.println(collection.isEmpty());   // false
System.out.println(collection.contains("A")); // true

// 删除
collection.remove("B");
System.out.println(collection);  // [A, C]

// 清空
collection.clear();
System.out.println(collection.size());  // 0

三、List接口 #

3.1 特点 #

  • 有序(按插入顺序)
  • 可重复
  • 可通过索引访问

3.2 常用方法 #

java
public interface List<E> extends Collection<E> {
    // 按索引操作
    void add(int index, E element);
    E get(int index);
    E set(int index, E element);
    E remove(int index);
    
    // 查找
    int indexOf(Object o);
    int lastIndexOf(Object o);
    
    // 子列表
    List<E> subList(int fromIndex, int toIndex);
}

3.3 实现类对比 #

实现类 底层结构 线程安全 适用场景
ArrayList 数组 不安全 随机访问多
LinkedList 链表 不安全 增删操作多
Vector 数组 安全 多线程环境

四、Set接口 #

4.1 特点 #

  • 不可重复
  • 最多一个null元素

4.2 实现类对比 #

实现类 底层结构 排序 适用场景
HashSet 哈希表 无序 快速查找
LinkedHashSet 哈希表+链表 插入顺序 需要保持顺序
TreeSet 红黑树 自然排序 需要排序

五、Map接口 #

5.1 特点 #

  • 存储键值对
  • 键不可重复
  • 值可重复

5.2 常用方法 #

java
public interface Map<K, V> {
    // 基本操作
    V put(K key, V value);
    V get(Object key);
    V remove(Object key);
    boolean containsKey(Object key);
    boolean containsValue(Object value);
    int size();
    boolean isEmpty();
    void clear();
    
    // 视图
    Set<K> keySet();
    Collection<V> values();
    Set<Map.Entry<K, V>> entrySet();
}

5.3 实现类对比 #

实现类 底层结构 线程安全 null键/值
HashMap 哈希表 不安全 允许
LinkedHashMap 哈希表+链表 不安全 允许
TreeMap 红黑树 不安全 键不允许null
Hashtable 哈希表 安全 不允许

六、Queue接口 #

6.1 特点 #

  • 先进先出(FIFO)
  • 用于排队处理

6.2 常用方法 #

java
public interface Queue<E> extends Collection<E> {
    // 添加(失败抛异常)
    boolean add(E e);
    
    // 添加(失败返回false)
    boolean offer(E e);
    
    // 获取并删除队首(空抛异常)
    E remove();
    
    // 获取并删除队首(空返回null)
    E poll();
    
    // 获取队首(空抛异常)
    E element();
    
    // 获取队首(空返回null)
    E peek();
}

七、集合选择 #

7.1 List选择 #

java
// 随机访问多 → ArrayList
List<String> list1 = new ArrayList<>();

// 增删操作多 → LinkedList
List<String> list2 = new LinkedList<>();

// 多线程 → Vector或CopyOnWriteArrayList
List<String> list3 = new CopyOnWriteArrayList<>();

7.2 Set选择 #

java
// 快速查找,不关心顺序 → HashSet
Set<String> set1 = new HashSet<>();

// 保持插入顺序 → LinkedHashSet
Set<String> set2 = new LinkedHashSet<>();

// 需要排序 → TreeSet
Set<String> set3 = new TreeSet<>();

7.3 Map选择 #

java
// 快速查找,不关心顺序 → HashMap
Map<String, Integer> map1 = new HashMap<>();

// 保持插入顺序 → LinkedHashMap
Map<String, Integer> map2 = new LinkedHashMap<>();

// 需要按键排序 → TreeMap
Map<String, Integer> map3 = new TreeMap<>();

// 多线程 → ConcurrentHashMap
Map<String, Integer> map4 = new ConcurrentHashMap<>();

八、总结 #

集合类型 特点 主要实现
List 有序、可重复 ArrayList, LinkedList
Set 不可重复 HashSet, TreeSet
Map 键值对 HashMap, TreeMap
Queue 先进先出 LinkedList, PriorityQueue

集合框架要点:

  • List有序可重复
  • Set不可重复
  • Map存储键值对
  • 根据场景选择合适的实现类
最后更新:2026-03-26