← 返回首页

Java集合框架详解

📂 java ⏱ 2 min 328 words

什么是Java集合框架

Java集合框架(Java Collections Framework)是一组统一的架构,用于表示和操作集合。它包括接口、实现类和算法,使开发者能够以高效、标准的方式处理对象集合。

集合框架的核心优势在于减少编程工作量、提高性能和代码质量。

三大核心接口

List(有序集合)

List是有序的、可重复的集合,允许通过索引访问元素。

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();
        arrayList.add("Java");
        arrayList.add("Python");
        arrayList.add("C++");
        System.out.println("ArrayList: " + arrayList);

        List<String> linkedList = new LinkedList<>();
        linkedList.add("Spring");
        linkedList.add("Hibernate");
        linkedList.add("MyBatis");
        System.out.println("LinkedList: " + linkedList);

        System.out.println("第一个元素: " + arrayList.get(0));

        arrayList.set(0, "Kotlin");
        System.out.println("修改后: " + arrayList);

        arrayList.remove("C++");
        System.out.println("删除后: " + arrayList);
    }
}

Set(无序集合)

Set是无序的、不可重复的集合,不允许存储相同的元素。

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetDemo {
    public static void main(String[] args) {
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Java");
        hashSet.add("Python");
        hashSet.add("Java");
        System.out.println("HashSet: " + hashSet);
        System.out.println("HashSet大小: " + hashSet.size());

        Set<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("Spring");
        linkedHashSet.add("Hibernate");
        linkedHashSet.add("MyBatis");
        System.out.println("LinkedHashSet: " + linkedHashSet);

        Set<String> treeSet = new TreeSet<>();
        treeSet.add("C");
        treeSet.add("A");
        treeSet.add("B");
        System.out.println("TreeSet: " + treeSet);

        System.out.println("包含Java: " + hashSet.contains("Java"));
    }
}

Map(键值对集合)

Map存储键值对,键不能重复,每个键最多映射一个值。

import java.util.HashMap;
import java.util.Map;

public class MapDemo {
    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Java", 100);
        hashMap.put("Python", 90);
        hashMap.put("C++", 85);
        System.out.println("HashMap: " + hashMap);

        System.out.println("Java分数: " + hashMap.get("Java"));
        System.out.println("包含Python: " + hashMap.containsKey("Python"));
        System.out.println("包含90分: " + hashMap.containsValue(90));

        for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        System.out.println("所有键: " + hashMap.keySet());
        System.out.println("所有值: " + hashMap.values());

        hashMap.replace("Java", 105);
        System.out.println("替换后: " + hashMap);

        hashMap.remove("C++");
        System.out.println("移除后: " + hashMap);
    }
}

Collections工具类

Collections工具类提供了对集合进行操作的静态方法:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollectionsUtilDemo {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);
        numbers.add(9);

        System.out.println("原始列表: " + numbers);

        Collections.sort(numbers);
        System.out.println("排序后: " + numbers);

        Collections.reverse(numbers);
        System.out.println("反转后: " + numbers);

        Collections.shuffle(numbers);
        System.out.println("打乱后: " + numbers);

        System.out.println("最大值: " + Collections.max(numbers));
        System.out.println("最小值: " + Collections.min(numbers));

        List<String> syncList = Collections.synchronizedList(new ArrayList<>());
    }
}

集合框架最佳实践

  1. 选择合适的集合类型:根据需求选择List、Set或Map
  2. 指定初始容量:避免频繁扩容影响性能
  3. 使用泛型:保证类型安全,避免ClassCastException
  4. 合理使用不可变集合:使用Collections.unmodifiableList创建不可变视图
  5. 注意线程安全:多线程环境使用线程安全的集合或同步机制
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class BestPractice {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(100);

        List<Integer> intList = new ArrayList<>();
        intList.add(100);

        List<String> immutableList = Collections.unmodifiableList(
            new ArrayList<>(List.of("Java", "Python", "C++"))
        );
    }
}

总结

Java集合框架是Java编程中最重要的基础设施之一。掌握List、Set、Map三大接口及其常用实现类,能够帮助开发者高效地处理各种数据结构需求。在实际开发中,应根据具体场景选择最合适的集合类型,并遵循最佳实践原则。