java collections

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 库。

### Java Collections Framework 教程及常用方法 #### 一、简介 Java 容器框架(Java Collections Framework, JCF)是一组类和接口,用于实现常用的可重用集合数据结构[^4]。 #### 二、核心接口 JCF 中定义了几种重要的接口来描述不同类型的集合: - `Collection`:最顶层的父接口,提供了基本操作集。 - `List`:有序集合,允许重复元素。 - `Set`:不允许有重复成员的无序集合。 - `Queue`:遵循先进先出原则的数据结构。 - `Map`:存储键值对映射关系的对象。 这些接口通过提供抽象层次使得开发者可以专注于业务逻辑而不是底层细节。 #### 三、默认方法支持 自 JDK8 起,在不破坏编译的前提下,默认方法让现有的 Java 接口得以扩展。例如,在 `java.util.Collection` 接口中增加了诸如 `stream()`、`parallelStream()` 和 `forEach()` 等实用的方法[^1]。 ```java // 使用 Collection 的 forEach 方法遍历列表中的每一个项并打印出来 List<String> list = Arrays.asList("apple", "banana"); list.forEach(System.out::println); ``` #### 四、性能优化建议 为了提高程序效率,当处理大量数据时应考虑以下几点最佳实践: - 对于频繁增删场景优先采用链表而非数组形式实现的 List 实现类;对于随机访问较多的情况则相反。 #### 五、常见算法复杂度分析 理解 Big-O 表示法有助于评估各种操作的时间复杂度。比如查找某个特定元素在一个未排序 ArrayList 上平均情况下需要 O(n),而在 HashSet 上几乎是常数级别即O(1)[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值