校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > Map、set集合(后序会删除)
题目

ArrayList<Integer>去重,插入 1,1,2,2,5,3,5,4,1,4,返回只有1 2 5 3 4的列表 

解答

三种方法:

1 利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复。

注意,这里采用添加到新列表,而不是在原列表进行remove,主要是会指针变化。

private static void removeDuplicate(List<String> list) {
List<String> result = new ArrayList<String>(list.size());
for (String str : list) {
if (!result.contains(str)) {
result.add(str);
}
}
list.clear();
list.addAll(result);


2 使用java8新特性stream进行List去重 

public static void main(String[] args)    { 
ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1,1,2,2,5,3,5,4,1,4));
System.out.println(numbersList);
List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());

System.out.println(listWithoutDuplicates);

}


3.利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序

private static void removeDuplicate(List<String> list) {
HashSet<String> set = new HashSet<String>(list.size());
List<String> result = new ArrayList<String>(list.size());
for (String str : list) {
if (set.add(str)) {
result.add(str);
}
}
list.clear();
list.addAll(result);
}


C 3条回复 评论
Peach

大厂面试的时候看重基础,更看重实战项目经验,业务场景使用的具体技术吧

发表于 2024-06-13 22:00:00
0 0
公积金

这个问题很常见

发表于 2023-06-30 21:00:00
0 0
公积金

想应聘产品经理岗位,不过还没有拿的出手的经历和作品,只做过一些产品运营的工作,都比较浅,只是入了个门,觉得心很虚。

发表于 2022-11-05 23:00:00
0 0