Java 面试官喜欢问如何解决List循环重复数据

Java 面试官喜欢问如何解决List循环重复数据

前言

在工作中有时候需要对List的数据进行去重,面试的时候面试官也喜欢问数据怎么去重,其实这篇文章更适合新手去学习
面试官问List数据怎么去重,是因为这是一个非常基础的问题,涉及到了Java或其他编程语言的基本数据结构和算法知识。同时,这也是一个非常实用的问题,因为在实际开发中,我们经常需要对重复的数据进行去重操作。

通过询问这个问题,面试官可以考察面试者对于List、Set等数据结构的理解和掌握程度,以及对于循环、条件语句等基本编程概念的熟练度。此外,面试官还可以通过进一步提问,深入了解面试者的思考过程和解决问题的能力。

总之,这个问题虽然简单,但是却是一个很好的起点,可以帮助面试官了解面试者的基础知识和实际应用能力。

一,List去重代码示例

在Java中,可以使用以下几种方式对List进行去重:

  1. 使用Set:将List转换成Set集合,由于Set集合的元素是唯一的,所以可以去除重复元素。然后再将Set转换回List。

示例代码:

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 3, 4, 4, 5));
Set<Integer> set = new HashSet<>(list);
list.clear();
list.addAll(set);
System.out.println(list);

输出结果:

[1, 2, 3, 4, 5]
  1. 使用循环遍历:遍历List中的每个元素,如果该元素没有出现过,则添加到新的List中。

示例代码:

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 3, 4, 4, 5));
List<Integer> newList = new ArrayList<>();
for (Integer i : list) {
    if (!newList.contains(i)) {
        newList.add(i);
    }
}
System.out.println(newList);

输出结果:

[1, 2, 3, 4, 5]
  1. 使用Java 8 Stream API:使用Stream的distinct()方法可以去除List中的重复元素。

示例代码:

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 3, 4, 4, 5));
List<Integer> newList = list.stream().distinct().collect(Collectors.toList());
System.out.println(newList);

输出结果:

[1, 2, 3, 4, 5]

需要注意的是,以上三种方式都会改变原始List的顺序。如果需要保留原始List的顺序,可以使用LinkedHashSet或者自定义函数来实现。

二,面试回答

当面试官问到了list该如何去重,我感觉可以这样回答,可以作为参考,我认为简单的处理方式有三种
1.使用Set:将List转换成Set集合,由于Set集合的元素是唯一的,所以可以去除重复元素。然后再将Set转换回List。如何需要保证原来的顺序可以使LinkedHashSet或者自定义函数来实现
2.使用循环遍历:遍历List中的每个元素,如果该元素没有出现过,则添加到新的List中。
3.使用Java 8 Stream API:使用Stream的distinct()方法可以去除List中的重复元素。

如果面试官问到了,那还有没有其他的方式进行去重呢,答案肯定是有的,可以使用map map的key是不允许重复的,另外可以说使用redis的set数据类型进行去重

那有些面试官就很扯淡可能还会问,那我去重了, 我还想保留之前没有去重之前的数据,咋整,还要统计重复数据的数量,要叫我说,你这是故意刁难我,如果我面过了还好,如果你故意刁难我,我还面个屁,有一次我面试问我JavaConfig是啥,可是我前面已经顺带讲过Javaconfig是啥了,又回头问我,我直接说你是不是程序员,人家说不是,人家照着面试题问我,我很是头大,我回答的跟面试题上面的一样显得我全靠背,说的不一样全靠自己的理解去表达,显得我有驴唇不对马嘴。面试官就是这样说我的,说我驴唇不对马嘴 ,照着面试题一点点问确实令人头大,所以面试过程中如果对面是程序员就照着自己的理解去回答,理解表达不上来的就照着面试题回答,要是hr或者其他的,那就找个八股文一字差的背诵吧 说这个问题是我扯远了,但是很是气愤,作为一个程序员,我是来求职的不是你故意让你刁难的,光看面试题问我,一点技术不懂面试个屁,说点难的深入一点的也听不懂,说点简单易懂的你一看怎么跟我txt记录的咋不一样呀,那肯定是他说错了 真的是拉低我的三观了。说回这个list的问题,这个问题很简单就说大概流程怎么做就完事了,很简单我就不说了,给大家提个醒,有些面试官压根不是要招人的,我遇见过很多,都是hr为了刷业绩。当遇见这个问题了还是要好好回答为好,万一过了呢,我在早期刚工作的时候也是遇见这个面试问的问题也四五次了,今天突然想起来了,喷几句。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_49841284/article/details/134085723