java基础-Java集合框架-Collection子接口-小总结
迭代器方式: 增强for循环: 哈希值计算:调用对象的 存储位置判断:
发布日期:2021-04-30 21:00:49
浏览次数:142
分类:精选文章
本文共 2076 字,大约阅读时间需要 6 分钟。
Java集合框架-Collection接口相关总结面试题
Collection接口总结
Collection的结构特点
Collection是Java集合框架中最底层的接口,用于存储一组对象。Collection的结构特点如下:
- 存储对象的特性:集合中的元素可以是任意对象,但需要注意对象的比较和哈希码计算。
- 实现类:如ArrayList、LinkedList、HashSet等。
Collection的常用方法
Collection接口提供了丰富的操作方法,主要包括:
- 增:add(E e)、addAll(Collection col)
- 删:remove(E e)、removeAll(Collection col)
- 改:set(E e)
- 查:contains(Object obj)、containsAll(Collection col)
- 长度:size()
- 清空:clear()
- 转换:toArray()、hashCode()
- 遍历:iterator()
Collection与数组的转换
- 数组转集合:使用
Arrays.asList()方法。 - 集合转数组:使用
toArray()方法。
Collection存储对象的要求
- 对于自定义类的对象,需重写
equals()和hashCode()方法。 - 使用
Collection存储对象时,需确保对象的类具备这些方法。
Collection的遍历方式
- 获取迭代器:
collection.iterator() - 遍历逻辑:
Iterator iterator = collection.iterator();while (iterator.hasNext()) { Object obj = iterator.next(); System.out.println(obj);}
for (Object obj : collection) { System.out.println(obj);}Iterator接口
- 作用:为集合提供遍历的接口。
- 获取方式:
coll.iterator() - remove方法:
- 调用方式:
iterator.remove() - 注意:在遍历过程中,调用
remove()会导致fast-fail机制,可能抛出异常。
- 调用方式:
List接口总结
List的特点
- 存储特性:有序、可重复。
- 实现类:ArrayList、LinkedList、Vector。
List的常用方法
// 增void add(E e);boolean remove(E e);void set(int index, E e);// 查E get(int index);int size();// 插入void add(int index, E e);// 遍历Iterator iterator();
List的实现类对比
- ArrayList:
- 基于动态数组实现,性能较高。
- 缺点:插入删除效率低。
- LinkedList:
- 基于双向链表实现,性能较低。
- 优点:插入删除效率高。
- Vector:
- 基于数组实现,线程安全。
- 缺点:扩容效率低。
Set接口总结
Set的特点
- 存储特性:无序、不可重复。
- 实现类:如HashSet、LinkedHashSet、TreeSet。
Set的存储原理
HashSet:
- 基于哈希表实现,存储元素通过哈希码定位。
- 无序。
- 允许存储null值。
LinkedHashSet:
- 基于哈希表和双向链表实现,保持元素的插入顺序。
- 适合需要有序访问的场景。
TreeSet:
- 基于树形结构实现,按自然顺序或定制顺序存储元素。
- 适合需要按特定规则排序的场景。
Set的添加过程
hashCode()方法。- 如果位置为空,直接存储。
- 如果位置非空,比较对象的
hashCode(),若相同则调用equals()判断是否为同一对象。
TreeSet的排序方式
- 自然排序:基于对象的
compareTo()方法。 - 定制排序:通过提供的
Comparator接口。
面试题解答
1. HashSet中的元素是否同一类的两个对象在添加后能否被移除?
- 在
SetTestQuestion2中,修改后的Person对象与原对象虽然equals()返回false,但由于hashCode()发生了变化,导致无法通过contains()检查到原对象。最终,修改后的Person对象被成功添加到集合中。
2. 去除List中重复的数字
- 使用
HashSet存储List中的元素,返回新列表即可去除重复项。
3. TreeSet的排序测试
- 按name排序:默认比较
Employee的name属性。 - 按生日排序:通过自定义
Comparator比较MyDate的年、月、日。
总结
通过本文的内容,可以全面了解Java集合框架中Collection、List、Set等接口的特点、实现方式以及常见操作方法。熟悉这些知识点是掌握Java集合编程的基础。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2026年06月14日 14时20分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!