Java集合面试题总结

1:请画出java的集合框架
在这里插入图片描述

2:Collection和Collections之间的区别?
在这里插入图片描述

3:请模拟写出Collections.addAll(list,23,45,77,19)
底层实现
在这里插入图片描述

这是Collections类中的一个静态方法,用于将指定的元素数组添加到给定的集合中。它使用了可变参数来接收任意数量的元素。
它的底层实现中使用了一个foreach循环遍历elements[]数组中的每个元素。对于每个元素,它调用c.add(element)方法来将元素添加到集合中,并根据返回值判断是否修改了集合。如果有任何一个元素成功地添加到集合中,modified被设为true。
最后,该方法返回modified变量的值,表示是否有元素成功添加到集合中。

4:请写出学过的单值集合 他们的底层的数据结构分别是 常用的构造方法分别是?
(1) ArrayList:底层数据结构是数组,使用动态数组实现。
在这里插入图片描述

(2) LinkedList:底层数据结构是双向链表。
LinkedList():创建一个空的LinkedList。
LinkedList(单值集合):创建一个包含指定集合元素的LinkedList
(3) HashSet:底层数据结构是哈希表,使用HashMap实现。
在这里插入图片描述

(4) TreeSet:底层数据结构是红黑树,使用TreeMap实现。
TreeSet():创建一个空的TreeSet
TreeSet(Collection<? extends E> c):创建一个包含指定集合元素的TreeSet
(5) EnumSet:底层数据结构是位向量,使用long类型的bit位来表示枚举元素的存在与否。
EnumSet set = EnumSet.allOf(枚举名.class);

5:ArrayList和LinkedList之间的区别

在这里插入图片描述
在这里插入图片描述

6:ArrayList和Vector之间的区别
在这里插入图片描述

7:ArrayList和HashSet在存储特性上有什么区别?
在这里插入图片描述

8:如何对ArrayList集合进行定制排序
Collections.sort(对象,比较器)
List.sort(比较器)

9:如何对TreeSet集合进行定制排序
需要提供一个实现了Comparator接口的比较器对象,然后将该比较器对象传递给TreeSet的构造方法
构造方法,比较器
treeSet re= new TreeSet(比较器)
10:HashSet集合里面装学生 如何得到HashSet集合里面的最高分
在这里插入图片描述

11:CME检测原理
每一个集合底层都有一个变量 叫modCount,记录对集合的处理[add remove clear]次数,每一次出现,modCount++,当通过list.iterator()得到迭代器的时候 底层将modCount的值交给迭代器自己的属性expectedModCount里面,当调用car.next()的时候 底层会触发modCount和expectedModCount的值的比较 如果两个值不同 出现CME异常
12:HashMap和Hashtable之间的区别
在这里插入图片描述

13:HashMap Hashtable ConcurrentHashMap之间的区别
在这里插入图片描述
在这里插入图片描述

14:HashMap在jdk7.0前后的底层变化
在这里插入图片描述

15:哈希表底层分组的时候为什么一直是开辟2的n次方数
在这里插入图片描述

16:如何定位HashMap的主键应该去到哪一个小组
在这里插入图片描述

17:在多线程的情况下HashMap不安全 有什么可以替换的方案
(1)用HashTable()
(2) ConcurrentHashMap
(3)Collections.synchronizedMap(HashMap对象)

18:如何得到当前的时间距离2023年7月1号0时0分0秒 的天数
在这里插入图片描述

19:如何格式化LocalDateTime类 最终显示XX年XX月XX天XX时XX分XX秒
在这里插入图片描述

20:String str = “张三,李四,张三,张三,王五,李四”;
统计每个名字出现的次数
在这里插入图片描述

在这里插入图片描述

21:ArrayList list = new ArrayList<>();
Collections.addAll(list,“叮叮当当”,“希希”,“张笑笑”,“aba”,“etoakkaote”);
使用流的方式将集合里面的回文打印出来
在这里插入图片描述

22:使用流的方法 利用list集合里面的每个字符
串对象创建一个学生对象出来装进Set集合里面
年龄拿着随机的数字赋值 20-30之间
学生类的构造方法:
public Student(String name,int age){
this.n ame = name;
this.age = age;
}
在这里插入图片描述

23:如何将枚举类A里面的元素装进数组里面
如何将枚举类A里面的元素装进集合里面
在这里插入图片描述

24: 写出四大函数式接以及它们内部的抽象方法以及返回类型
在这里插入图片描述

25:给定一个字符串数组,请使用Lambda表达式过滤掉长度大于5
的字符串并以逗号分隔输出。
在这里插入图片描述

26:在Java 8中,我们可以使用Lambda表达式来简化比较器的编写。
请编写一个Lambda表达式,将员工列表按照薪水从高到低排序。
在这里插入图片描述
在这里插入图片描述

27:HashSet如何保证元素的唯一性?
在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爪洼小孙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值