第六章 集合与泛型知识点总结
1. 集合概述
集合是一种容器,用于存储多个对象。Java 集合框架提供了一系列接口和类来管理和操作对象集合,方便数据的组织与处理,提高编程效率,比如在处理大量数据时,能更便捷地进行添加、删除、查找等操作。
2. Collection 集合
Collection 是集合层次结构中的根接口,定义了一些集合通用的基本操作方法,如 add 方法用于添加元素,remove 方法用于移除元素,contains 方法用于判断集合是否包含指定元素,size 方法用于获取集合中元素的数量等。它是 List 和 Set 等接口的父接口 。
3. List 集合
• List 集合简介:List 接口继承自 Collection 接口,它的特点是有序(元素存入和取出顺序一致)、可重复(允许有重复元素) 。
• ArrayList 集合:是 List 接口的常用实现类,基于数组实现。它的优点是查询速度快,因为底层数组可通过索引快速访问元素;缺点是在频繁插入和删除元素时性能较差,因为涉及数组元素的移动。例如在向数组中间插入元素时,后续元素都要后移。
• LinkedList 集合:也是 List 接口的实现类,基于链表实现。它在插入和删除元素时性能较好,不需要像数组那样移动大量元素,只需改变链表节点的引用;但查询元素时性能相对较差,需要从链表头或尾开始遍历查找。
• 集合的遍历:可以使用迭代器(Iterator)遍历,通过 hasNext 方法判断是否还有下一个元素,next 方法获取下一个元素;也可以使用增强 for 循环遍历,语法简洁,方便对集合元素进行读取操作。
4. 泛型
泛型是 Java 5 引入的新特性,允许在定义类、接口、方法时使用类型参数。使用泛型可以提高代码的通用性和类型安全性,避免类型转换异常。例如定义 ArrayList<Integer> ,就限定该集合只能存储 Integer 类型的元素,在编译阶段就能检查类型错误 。
5. Set 集合
• HashSet 集合:实现了 Set 接口,基于哈希表实现。它的特点是元素无序(存入和取出顺序可能不同)且不重复,通过哈希码来确定元素的存储位置,判断元素是否重复也是基于哈希码和 equals 方法。
• TreeSet 集合:同样实现了 Set 接口,基于红黑树实现。它能对元素进行自动排序,排序规则可以是自然排序(元素实现 Comparable 接口),也可以自定义排序(传入 Comparator 接口实现类) ,元素同样不重复。
6. Map 集合
• Map 集合简介:Map 接口用于存储键值对(key - value)映射关系,一个键最多映射到一个值。它提供了如 put 方法添加键值对,get 方法根据键获取值,keySet 方法获取所有键的集合,values 方法获取所有值的集合等操作方法。
• HashMap 集合:是 Map 接口的常用实现类,基于哈希表实现。它允许 null 键和 null 值,但键必须唯一,查找、插入和删除操作性能较好。
• TreeMap 集合:实现了 Map 接口,基于红黑树实现。它会根据键的顺序对键值对进行排序,排序方式和 TreeSet 类似,可自然排序或自定义排序,适用于需要按键有序遍历键值对的场景 。
7. Stream 流
Java 8 引入的 Stream API 用于对集合等数据源进行函数式编程风格的操作。可以通过 Stream 对集合元素进行过滤、映射、排序、聚合等操作,以更简洁的方式处理数据。例如使用 filter 方法过滤出满足条件的元素,map 方法对元素进行转换等,提高了代码的可读性和简洁性 。