Java Collections Framework 是 Java 中用于处理集合(如列表、集合、映射等)的工具库。它提供了一套丰富的接口和实现类,用于存储和操作对象集合。
1. 主要接口
1.1 Collection 接口
Collection
是所有集合类的根接口,定义了集合的基本操作,如添加、删除和遍历元素。
Collection<String> collection = new ArrayList<>();
collection.add("Kimi");
collection.add("Moonshot");
System.out.println("Size: " + collection.size()); // 输出集合大小
System.out.println("Contains 'Kimi': " + collection.contains("Kimi")); // 检查是否包含某个元素
1.2 List 接口
List
是有序集合,允许重复元素。它提供了基于索引的操作。
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // 允许重复
System.out.println("List: " + list);
System.out.println("Element at index 1: " + list.get(1)); // 获取指定索引的元素
list.set(1, "Orange"); // 替换指定索引的元素
System.out.println("Updated List: " + list);
1.3 Set 接口
Set
是不包含重复元素的集合。它提供了唯一性保证。
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 重复元素不会被添加
System.out.println("Set: " + set);
1.4 Map 接口
Map
是键值对的集合,键是唯一的,但值可以重复。
Map<String, Integer> map = new HashMap<>();
map.put("Kimi", 25);
map.put("Moonshot", 30);
System.out.println("Map: " + map);
System.out.println("Value for 'Kimi': " + map.get("Kimi")); // 获取键对应的值
2. 常用实现类
2.1 ArrayList
ArrayList
是基于动态数组实现的 List
,适合频繁的随机访问。
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
System.out.println("ArrayList: " + arrayList);
2.2 LinkedList
LinkedList
是基于双向链表实现的 List
,适合频繁的插入和删除操作。
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("A");
linkedList.add("B");
linkedList.addFirst("X"); // 在头部插入
System.out.println("LinkedList: " + linkedList);
2.3 HashSet
HashSet
是基于哈希表实现的 Set
,提供快速的查找和插入。
HashSet<String> hashSet = new HashSet<>();
hashSet.add("A");
hashSet.add("B");
hashSet.add("A"); // 重复元素不会被添加
System.out.println("HashSet: " + hashSet);
2.4 TreeSet
TreeSet
是基于红黑树实现的 Set
,提供有序的元素存储。
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Cherry");
System.out.println("TreeSet: " + treeSet); // 输出有序
2.5 HashMap
HashMap
是基于哈希表实现的 Map
,提供快速的键值对查找。
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
System.out.println("HashMap: " + hashMap);
2.6 TreeMap
TreeMap
是基于红黑树实现的 Map
,提供有序的键值对存储。
TreeMap<String, Integer> treeMap = new TreeMap<>();
treeMap.put("A", 1);
treeMap.put("B", 2);
treeMap.put("C", 3);
System.out.println("TreeMap: " + treeMap); // 输出有序
3. Collections 工具类
Collections
是一个工具类,提供了对集合操作的静态方法。
3.1 排序
List<String> list = new ArrayList<>();
list.add("Kimi");
list.add("Moonshot");
list.add("AI");
Collections.sort(list); // 自然排序
System.out.println("Sorted List: " + list);
3.2 反转
Collections.reverse(list); // 反转列表
System.out.println("Reversed List: " + list);
3.3 查找最大值/最小值
String max = Collections.max(list); // 查找最大值
String min = Collections.min(list); // 查找最小值
System.out.println("Max: " + max + ", Min: " + min);
3.4 填充集合
Collections.fill(list, "Filled"); // 填充集合
System.out.println("Filled List: " + list);
3.5 同步集合
List<String> syncList = Collections.synchronizedList(new ArrayList<>()); // 同步列表
syncList.add("Thread-safe");
4. 其他工具类
4.1 Arrays
Arrays
是用于操作数组的工具类。
String[] array = {"A", "B", "C"};
Arrays.sort(array); // 排序数组
System.out.println("Sorted Array: " + Arrays.toString(array));
4.2 Stream API
Stream
是 Java 8 引入的流式处理工具,用于对集合进行批量操作。
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
list.stream()
.filter(s -> s.startsWith("A")) // 过滤以 A 开头的元素
.map(String::toUpperCase) // 转为大写
.forEach(System.out::println); // 打印结果
5. 高级特性
5.1 Lambda 表达式
Lambda 表达式可以简化集合操作。
list.forEach(s -> System.out.println(s.toUpperCase())); // 使用 Lambda 表达式
5.2 Optional
Optional
是用于处理空值的工具类。
Optional<String> optional = Optional.of("Kimi");
optional.ifPresent(System.out::println); // 如果有值则打印
总结
Java Collections Framework 提供了丰富的接口和实现类,用于处理各种集合操作。通过掌握这些接口、类和工具类,可以高效地管理和操作对象集合。希望这些示例能帮助你更好地理解和使用 Collections 库。