• 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中集合框架

     

  • 相关阅读:
    雅思 四处刷题的记录(一)
    【项目_01】搭建项目基本框架、底部tabbar、头部banner | 旅途拾景 | 基于Vue3全家桶
    竞赛 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测
    艾美捷FcyRl (CD64),FCGR1A,生物活性活动分析结果
    代码随想录二刷day41
    基于Springboot的就业服务平台
    华为云国际站账号购买:WeLink安全服务,为企业数字化转型保驾护航
    408-2012
    Linux云服务环境安装-Mysql8.0篇
    使用MinIO Client客户端实现MySQL数据库跨机备份
  • 原文地址:https://blog.csdn.net/Blue92120/article/details/125426768