Java集合框架 List集合、Set集合、Map集合 学习泛型与包装类的装箱拆箱
发布日期:2021-05-07 13:55:42 浏览次数:11 分类:精选文章

本文共 3332 字,大约阅读时间需要 11 分钟。

Java集合框架深入解析

集合框架是Java编程中最核心的工具之一,它为我们提供了灵活且高效的数据结构,适用于各种场景。从简单的集合操作到复杂的键值对管理,集合框架为开发者提供了强大的支持。

集合框架概述

集合框架的根接口是Collection,它定义了单列集合的基本操作方法。集合的主要特点是元素的唯一性和无序性。Collection接口下有两个重要的子接口:ListSet

  • List:支持有序且允许重复的元素,如ArrayList和LinkedList。
  • Set:支持无序且不允许重复的元素,如HashSet和TreeSet。

集合框架的核心操作包括添加、删除、检查存在性、清空等功能,这些操作对于任何实现集合的类都是通用的。

List和Set的区别

ListSet虽然都是Collection的子接口,但它们的核心特性存在显著差异:

  • List:元素具有顺序性,支持索引访问,适合需要有序操作的场景。
  • Set:元素无序,强调唯一性,适合需要快速查找的场景。

理解这两者的区别是学习集合框架的基础。

Map接口详解

Map接口是Java集合框架中的另一个重要组成部分,它用于存储键值对。Map的核心特性是通过键快速定位对应的值。

常见的Map实现类包括:

  • HashMap:哈希表实现,查找和插入操作平均时间复杂度为O(1)。
  • TreeMap:基于红黑树实现,保留有序键集。

Map提供了丰富的操作方法,包括:

  • put:添加键值对。
  • get:根据键获取对应的值。
  • containsKey、containsValue、containsEntry:检查键值对的存在性。
  • remove:移除键值对。
  • replace:替换键值对。
  • computeIfAbsent、computeIfPresent:条件性操作。

通过遍历Map中的所有键值对,可以使用for-each循环简化代码。

Iterator与foreach循环

集合框架提供了Iterator接口用于遍历集合元素,这是高级操作。Iterator的常用方法包括:

  • hasNext:判断是否有下一个元素。
  • next:获取下一个元素。
  • remove:移除当前元素。

为了简化操作,JDK5.0引入了foreach增强循环,允许直接遍历集合元素。这种写法更简洁,广泛应用于日常开发。

泛型的应用

集合框架支持泛型,允许定义类型安全的集合操作。例如:

List
list = new ArrayList<>();list.add("Hello");String str = list.get(0); // 安全类型检查

泛型在编译时确保类型一致,运行时通过类型擦除实现。正确使用泛型可以提升代码的健壮性和可读性。

装箱与拆箱

Java提供了装箱和拆箱机制,将基本类型和对象类型互相转换:

  • 装箱:将基本类型转换为包装类。例如:

    Integer num = Integer.valueOf(10);
  • 拆箱:将包装类转换回基本类型。例如:

    int num = numValue.intValue();

自动装箱和拆箱在基本类型和包装类之间无缝连接,简化了代码编写。

集合操作示例

以下是集合和Map的典型操作示例:

集合操作

Collection
collection = new ArrayList<>();collection.add("aaa");System.out.println(collection.contains("aaa")); // trueSystem.out.println(collection.equals("aaa")); // falseSystem.out.println(collection.isEmpty()); // falsecollection.remove("aaa");System.out.println(collection.isEmpty()); // true

Map操作

Map
map = new HashMap<>();System.out.println(map.isEmpty()); // trueSystem.out.println(map.size()); // 0map.put("Zero", "000");map.put("One", "111");map.put("Two", "222");System.out.println(map.containsKey("Zero")); // trueSystem.out.println(map.containsValue("222")); // trueSystem.out.println(map.get("Two")); // "222"System.out.println(map.size()); // 3map.put("Three", "333");System.out.println(map.size()); // 4// 处理缺失键值对System.out.println(map.get("Fore")); // nullSystem.out.println(map.getOrDefault("Fore", "444")); // "444"// 遍历键值对for (Map.Entry
entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue());}System.out.println(map.keySet()); // {Two=222, Three=333, Zero=000, One=111}System.out.println(map.values()); // {000, 111, 222, 333}// 移除操作map.remove("Zero");for (Map.Entry
entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue());}System.out.println(map.remove("One", "111")); // "111"for (Map.Entry
entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue());}// 替换操作map.replace("Two", "二二二");map.replace("Three", "333", "三三三");for (Map.Entry
entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue());}map.replace("Three", "222", "333");for (Map.Entry
entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue());}

这些示例展示了集合框架的实际使用场景,帮助开发者更好地理解和掌握。

总结

集合框架是Java编程的核心工具,涵盖了从单列到双列的多种数据结构。理解集合框架的特性和使用方法,对于任何Java开发者的成长至关重要。从简单的集合操作到复杂的Map管理,再到泛型和Iterator的应用,集合框架为开发者提供了强大的支持。通过不断实践和总结,开发者能够充分发挥集合框架的优势,写出更高效、更健壮的代码。

上一篇:Java~List接口强化练习“”杨辉三角“”
下一篇:Java~完成项目图书管理系统(增加整理书籍功能)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月06日 22时06分13秒