• Java集合常见面试题汇总


    1. 写出 List、Set、Map的各自特点

    List接口:

    存储任意类型的Object对象,有序、有下标、元素可以重复;

    下标范围:0~元素个数-1 0~size()-1

    Set集合:

    无序、无下标、元素内容不允许重复;

    Map集合:

    (1) Map以键值对形式存储(key-value)。

    (2) 键:无序、无下标、元素不允许重复(唯一)。

    (3) 值:无序、无下标、元素内容允许重复。

    2. 写出 ArrayList 和 Vector的区别

    a. ArrayList:

    底层以数组实现,查询效率快,增删效率慢

    JDK1.2版本,线程不安全,并发效率相对高

    b. Vector:

    底层以数组实现,查询效率快,增删效率慢

    JDK1.0 版本,线程安全,并发效率低

    3. 写出 ArrayList 和 LinkedList的区别

    a. ArrayList:

    底层以数组实现,查询效率快,增删效率慢

    JDK1.2版本,线程不安全,并发效率相对高

    b LinkedList:

    底层以链表实现,查询效率相对较低,增删效率相对快

       扩充:数组在内存空间连续:内存空间利用率相对不高 (寻址方便)
         链表在内存空间不连续:内存空间利用相对较高 (寻址相对麻烦)

    4. 写出 HashSet如何保证元素内容不重复

    I. 如果保证HashSet中存储内容不同的对象,需要做到以下两点:

    a. 覆盖 hashCode方法

    ① 原则:必须保证内容相同的对象返回相同的哈希码值;

    为了提高效率,尽可能做到内容不同的对象返回不同哈希码值

    ② 覆盖:将所有的属性值拼凑为一个 int 的整数作为返回值返回

    b. 覆盖 equals方法

    ① 必须保证内容相同返回 true,拒绝添加元素

    ② 内容不同的对象返回值为false,则成功添加

    II. 执行原理:当一个对象往 HashSet集合中存储时,先调用当前对象的

    hashCode方法,获取对应存储下标(为了保证内容相同的对象不添加

    到HashSet集合中,通常将 hashCode方法给与覆盖),存储下标位置

    上没有任何元素,则直接将对象存储在对应下标位置上,但是如果下标

    位置上已经存储了其他元素,则调用 该对象 equals方法(为了保证

    内容不同通常覆盖 equals方法),equals方法返回值为true,代表

    内容相同对象,则拒绝添加到集合中,如果返回值为false,则成功添

    加到对应下标位置,此时采用数组+链表形式进行存储。

    5. 写出 HashMap 和 Hashtable 的区别

    (1) HashMap:

    JDK1.2版本,线程不安全,并发效率快,允许null作为

    key/value

    (2) Hashtable:

    JDK1.0版本,线程安全,并发效率低,不允许null作为

    key/value

    6. 简述 HashMap的存储原理

    HashMap: 存储元素时获取key的哈希码值(通过键对应对象的hashCode方法),

    获取哈希码值与底层存储时数组取余得到存储下标,第一种情况存储

    下标上没有元素,则直接添加(将key和value一起存储);第二种情

    况,存储下标位置上如果有元素,则调用key对应存储对象的equals

    方法,判断下标冲突的对象内容是否相同,equals方法结果为true,

    代表内容相同,则拒绝添加,equals方法结果为false,代表内容不

    同,此时采用数组+链表形式进行存储

    HashMap应用注意细节: 如果自定类型的对象作为HashMap的键进行存储,为了

    保证元素内容不重复,需要覆盖 hashCode和equals方法(规则等价于

    HashSet);但是实际开发应用,通常使用 Integer、String作为

    HashMap的key类型

    注意:HashSet底层实际封装了一个 HashMap

    7. 简述 Comparator 和 Comparable的区别

    Comparator是外置比较器,实现方法 compare(Tt1,T t2);

    Comparable是内置比较器,实现方法 compareTo(Tt)方法;

    8. 简述 Java中集合框架

     

  • 相关阅读:
    遗传工具箱记录
    JVM知识点总结
    XCZU19EG_FFVC1760芯片的封装和管脚
    JVM思维导图
    推进智慧工地建设,智慧工地是什么?建筑工地人必看!
    算法竞赛备赛之动态规划训练提升,DP基础掌握
    CISP-PTE实操练习题讲解一(新版)
    RabbitMQ(基于AMQP的开源消息代理软件)
    深圳锐科达SV-X7 sip话机与海康威视摄像头联动设置方法
    Git的安装和使用以及VScode配置Git的快速使用
  • 原文地址:https://blog.csdn.net/Blue92120/article/details/125426768