Java集合框架详解

集合框架概述

Java集合框架是Java提供的一套用于存储和操作一组对象的架构。集合框架包括接口、实现类和算法,使开发者可以高效地处理数据。

主要接口与实现类

Collection接口

Collection是所有集合类的根接口,它定义了集合的基本操作,如添加、删除、清空等。

List接口

List是有序集合,可以通过索引访问元素。

常用实现:

  1. ArrayList - 基于数组的List实现,随机访问效率高

    1
    2
    3
    4
    5
    List<String> arrayList = new ArrayList<>();
    arrayList.add("Java");
    arrayList.add("Python");
    arrayList.add("C++");
    System.out.println(arrayList.get(1)); // 输出: Python
  2. LinkedList - 基于双向链表的List实现,插入和删除效率高

    1
    2
    3
    4
    List<String> linkedList = new LinkedList<>();
    linkedList.add("First");
    linkedList.add("Second");
    linkedList.addFirst("Start"); // LinkedList特有方法

Set接口

Set是不允许有重复元素的集合。

常用实现:

  1. HashSet - 基于哈希表的Set实现,不保证元素顺序

    1
    2
    3
    4
    5
    Set<Integer> hashSet = new HashSet<>();
    hashSet.add(1);
    hashSet.add(2);
    hashSet.add(1); // 重复元素不会被添加
    System.out.println(hashSet.size()); // 输出: 2
  2. TreeSet - 基于红黑树的Set实现,元素按照自然顺序或指定的比较器排序

    1
    2
    3
    4
    5
    Set<String> treeSet = new TreeSet<>();
    treeSet.add("C");
    treeSet.add("A");
    treeSet.add("B");
    // 遍历输出: A B C(自动排序)

Map接口

Map是键值对映射的集合,不允许重复键。

常用实现:

  1. HashMap - 基于哈希表的Map实现,允许null键和值

    1
    2
    3
    4
    Map<String, Integer> hashMap = new HashMap<>();
    hashMap.put("Java", 95);
    hashMap.put("Python", 90);
    System.out.println(hashMap.get("Java")); // 输出: 95
  2. TreeMap - 基于红黑树的Map实现,按键的自然顺序或指定的比较器排序

    1
    2
    3
    4
    5
    Map<String, Integer> treeMap = new TreeMap<>();
    treeMap.put("C", 78);
    treeMap.put("A", 90);
    treeMap.put("B", 85);
    // 遍历时键的顺序: A B C

集合框架的工具类

Java提供了Collections工具类,包含了对集合进行操作的各种静态方法:

1
2
3
4
5
6
7
8
9
10
11
List<Integer> numbers = new ArrayList<>();
numbers.add(3);
numbers.add(1);
numbers.add(2);

Collections.sort(numbers); // 排序
System.out.println(numbers); // 输出: [1, 2, 3]

Collections.shuffle(numbers); // 打乱顺序
Collections.max(numbers); // 返回最大值
Collections.min(numbers); // 返回最小值

并发集合

对于多线程环境,Java提供了线程安全的集合类:

1
2
List<String> synchronizedList = Collections.synchronizedList(new ArrayList<>());
Map<String, String> concurrentMap = new ConcurrentHashMap<>();

总结

Java集合框架是Java开发中最常用的API之一,合理使用集合框架可以极大地提高程序的效率和可读性。选择合适的集合实现类需要考虑数据结构特性、性能需求以及线程安全性等因素。