面试题:List去重,不可不知的五种方法
2017-11-18 22:03
309 查看
面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固
下面,我就将五种方法逐一展现
新建一个list数组:
List list = new ArrayList();
list.add(26);
list.add(39);
list.add(5);
list.add(40);
list.add(39);
list.add(25);
System.out.println(list);
方法一:使用java8新特性stream进行List去重
List newList = list.stream().distinct().collect(Collectors.toList());
System.out.println(“java8新特性stream去重:”+newList);
list.add(39);
方法二:双重for循环去重
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(i!=j&&list.get(i)==list.get(j)) {
list.remove(list.get(j));
}
}
}
System.out.println(“双重for循环去重:”+list);
list.add(39);
方法三:set集合判断去重,不打乱顺序
Set set1 = new HashSet();
List newList1 = new ArrayList();
for (Integer integer : list) {
if(set1.add(integer)) {
newList1.add(integer);
}
}
System.out.println(“set集合判断去重:”+list);
list.add(39);
方法四:遍历后判断赋给另一个list集合
List newList2 = new ArrayList();
for (Integer integer : list) {
if(!newList2.contains(integer)){
newList2.add(integer);
}
}
System.out.println(“赋值新list去重:”+newList2);
list.add(39);
方法五:set和list转换去重
Set set2 = new HashSet();
List newList3 = new ArrayList();
set2.addAll(list);
newList3.addAll(set2);
System.out.println(“set和list转换去重:”+newList3);
下面,我就将五种方法逐一展现
新建一个list数组:
List list = new ArrayList();
list.add(26);
list.add(39);
list.add(5);
list.add(40);
list.add(39);
list.add(25);
System.out.println(list);
方法一:使用java8新特性stream进行List去重
List newList = list.stream().distinct().collect(Collectors.toList());
System.out.println(“java8新特性stream去重:”+newList);
list.add(39);
方法二:双重for循环去重
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(i!=j&&list.get(i)==list.get(j)) {
list.remove(list.get(j));
}
}
}
System.out.println(“双重for循环去重:”+list);
list.add(39);
方法三:set集合判断去重,不打乱顺序
Set set1 = new HashSet();
List newList1 = new ArrayList();
for (Integer integer : list) {
if(set1.add(integer)) {
newList1.add(integer);
}
}
System.out.println(“set集合判断去重:”+list);
list.add(39);
方法四:遍历后判断赋给另一个list集合
List newList2 = new ArrayList();
for (Integer integer : list) {
if(!newList2.contains(integer)){
newList2.add(integer);
}
}
System.out.println(“赋值新list去重:”+newList2);
list.add(39);
方法五:set和list转换去重
Set set2 = new HashSet();
List newList3 = new ArrayList();
set2.addAll(list);
newList3.addAll(set2);
System.out.println(“set和list转换去重:”+newList3);
相关文章推荐
- 将数组转为List的方法,转换后不可执行List的哪些操作?
- 你不可不知的final(3)-初始化时机(失手率比较高的一道面试题)
- 玩转web之javaScript(五)---js和jquery一些不可不知的方法(input篇)
- Scala 不可变 List 方法
- [图解教程]Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
- 不可不知 DDoS的攻击原理与防御方法
- 玩转web之javaScript(五)---js和jquery一些不可不知的方法(input篇)
- 不可不知 DDoS的***原理与防御方法
- 玩转web之javaScript(五)---js和jquery一些不可不知的方法(input篇)
- 开发者不可不知的10个报表优化方法(一)
- [改善Java代码]asList方法产生的List对象不可更改
- 不可不知的C#基础 1. -- Extension 扩展方法
- 图解教程]Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
- Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
- [图解教程]Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
- 不可不知 DDoS的攻击原理与防御方法(2)
- 无招有招——工作积累编程思想之不可不知的XML的五种用途
- Hibernate面试题 --- list和iterator方法的区别
- asList方法产生的List对象不可更改
- 不可不知的站群外推方法与技巧