java基础-Java集合框架-Collection子接口-小总结
发布日期: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循环
    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排序:默认比较Employeename属性。
    • 按生日排序:通过自定义Comparator比较MyDate的年、月、日。

    总结

    通过本文的内容,可以全面了解Java集合框架中CollectionListSet等接口的特点、实现方式以及常见操作方法。熟悉这些知识点是掌握Java集合编程的基础。

    上一篇:MyBatisPlus学习笔记__02:性能分析插件+条件构造器+代码生成工具+BUG处理
    下一篇:字节大神强推千页PDF学习笔记,源码+原理+手写框架

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2026年06月14日 14时20分36秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章