试题
考点

java语言-容器和Map-Map、set集合(后序会删除)

面5笔5

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

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

三种方法:

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);
}


评论

公积金

2023-06-30 21:00:00

0 0

加载更多