-
List数据去重的五种有效方法
2019-07-16 15:25:35List去重方案方案一 方案一 /** * 去除重复数据 * * @param list */ public List<Map<String, Object>> distinct(List<Map<String, Object>> list) { final boolean sta =.....List去重方案
方案一:借助Set的特性进行去重
/** * 去除重复数据 * 由于Set的无序性,不会保持原来顺序 * @param list */ public static List<String> list distinct(List<String> list) { final boolean sta = null != list && list.size() > 0; List doubleList= new ArrayList(); if (sta) { Set set = new HashSet(); set.addAll(list); doubleList.addAll(set); } return doubleList; }
方案二 : 利用set集合特性保持顺序一致去重
// Set去重并保持原先顺序的两种方法 public static void delRepeat(List<String> list) { //方法一 List<String> listNew = new ArrayList<String>(new TreeSet<String>(list)); //方法二 List<String> listNew2 = new ArrayList<String>(new LinkedHashSet<String>(list)); }
方案三 : 使用list自身方法remove()–>不推荐
/** * 去除重复数据(一般不推荐) * 类似于冒泡排序思想 * @param list */ public static List<Map<String, Object>> distinct(List<Map<String, Object>> list) { if (null != list && list.size() > 0) { //循环list集合 for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { // 这里是对象的比较,如果去重条件不一样,在这里修改即可 if (list.get(j).equals(list.get(i))) { list.remove(j); } } } } //得到最新移除重复元素的list return list; }
方案四 : 遍历List集合,将元素添加到另一个List集合中
// 遍历后判断赋给另一个list集合,保持原来顺序 public static List<String> delRepeat(List<String> list) { List<String> listNew = new ArrayList<String>(); for (String str : list) { if (!listNew.contains(str)) { listNew.add(str); } } return listNew ; }
方案5 : 使用Java8特性去重
public static List<String> delRepeat(List<String> list) { List<String> myList = list.stream().distinct().collect(Collectors.toList()); return myList ; }
-
使用 Java8的 stream对list数据去重,使用filter()过滤列表,list转map
2018-09-12 14:00:50list去重,根据对象某个属性、某几个属性去重 去除List中重复的String List unique = list.stream().distinct().collect(Collectors.toList()); 去除List中重复的对象 // Person 对象 public class ...list去重,根据对象某个属性、某几个属性去重
去除List中重复的String
List unique = list.stream().distinct().collect(Collectors.toList());
去除List中重复的对象
// Person 对象 public class Person { private String id; private String name; private String sex; <!--省略 get set--> }
// 根据name去重 List<Person> unique = persons.stream().collect( Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new) );
// 根据name,sex两个属性去重 List<Person> unique = persons.stream().collect( Collectors. collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getSex()))), ArrayList::new) );
filter()过滤列表
List<Person> filterList = persons.stream().filter(p -> p.getSex().equals(1)).collect(Collectors.toList());
List转Map
从一个Person对象的List集合,取出
id
和name
组成一个map集合Map<String, String> collect = list.stream().collect(Collectors.toMap(p -> p.getId(), p -> p.getName()));
从 List 中取出某个属性的组成 list 集合
//1.提取出list对象中的一个属性 List<String> stIdList1 = stuList.stream().map(Person::getId).collect(Collectors.toList()); //2.提取出list对象中的一个属性并去重 List<String> stIdList2 = stuList.stream().map(Person::getId).distinct().collect(Collectors.toList());
-
list的五种去重方法
2018-10-31 10:12:35面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固 下面,我就将五种方法逐一...面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固
下面,我就将五种方法逐一展现
新建一个list数组:
List list = new ArrayList();
list.add(26);
list.add(39);
list.add(39);
list.add(39);
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));
}
}
}上面的方法研究后,确实有点小问题,下面放上优化后的方法(不推荐使用,速度太慢)
for (int i = 0; i < list.size(); i++) { for (int j = 0; j < list.size(); ) { // System.out.println(i+"-"+list.get(i)+"-"+j+"!!!!"+list.get(j)); if (i != j && list.get(i) == list.get(j)) { // System.out.println(j+":"+list.get(j)); list.remove(j); } else { 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);
---------------------
作者:Trainer2107
来源:CSDN
原文:https://blog.csdn.net/Trainer2107/article/details/78571619
版权声明:本文为博主原创文章,转载请附上博文链接! -
【前端去重】数组去重&字符串去重&对象去重
2020-09-28 18:45:58今天被去重玩死了,最后发现from写成了form,真是被自己蠢死了!如果写代码不是为了折磨自己,那将毫无意义! 接下来,鞭笞去重 数组去重 new Set去重之后获取的是假数组,需要用Array.from处理一下 let value = ['...今天被去重玩死了,最后发现from写成了form,真是被自己蠢死了!如果写代码不是为了折磨自己,那将毫无意义!
接下来,鞭笞去重数组去重
new Set去重之后获取的是假数组,需要用Array.from处理一下
let value = ['是','不是','是']; value = Array.from(new Set(value));
字符串去重
第一种方法就是把字符串用split转换为数组,用上面数组去重的方法去重之后,再用join转回字符串
let value = '是不是,是'; value = Array.from(new Set(value.split(''))).join();
第二种方法是利用两层循环
let value = '是不是,是';let newValue = '是'; for(var i=1;i<value.length;i++){ for(var j=0;j<newValue.length;j++){ if(newValue.indexOf(str[i])===-1){ newValue=newValue.concat(value[i]); } } }console.log(newValue);
对象去重
下面是根据对象的id作为去重的依据,也可根据name去重,看个人需求
let value = [ { id: 1, name: '是' }, { id: 1, name: '不是' }, { id: 2, name: '是不是' }, { id: 3, name: '不是不是' } ]; const res = new Map(); console.log(value); value.filter((value) => !res.has(value.id) && res.set(value.id, 1));
还没看够就结束了?快来关注xio博主吧~精彩花絮,幕后彩蛋等你来找哦~(#^.^#)~ -
HashSet去重
2017-07-27 14:33:58简述了HashSet去重原理 -
TXT文本去重 TXT去重 TXT文本合并去重工具 —— 20亿行130GB的数据只需60分钟
2019-07-09 14:00:28例如:多个TXT大数据文本文件合并以及文本行去重 130GB20亿行数据60分钟即可完成去重操作 测试数据大小:20亿行130GB的数据只需60分钟 平均去重速度:2000000000(行) ÷ 3600(秒) = 555555(行/秒)≈55万行/秒 ... -
JS实现数组去重及数组内对象去重功能示例
2020-10-17 10:55:07主要介绍了JS实现数组去重及数组内对象去重功能,结合实例形式分析了ES5与ES6两种版本针对数组去重的相关操作技巧,需要的朋友可以参考下 -
数组去重
2020-03-16 17:52:37去重的方法多种多样,以下提供三种去重方案 1.循环去重 2.filter去重 3.利用对象特性去重 1.循环去重 2.filter去重(过滤、数组方法) 3.利用对象特性去重 ... -
Java中对List去重 Stream去重的解决方法
2020-08-27 17:11:23主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下 -
oracle去重语句
2018-01-23 12:48:48oracle去重语句 ,批量设置,去除重复以及空格racle去重语句racle去重语句 -
易语言节点去重源码
2020-07-24 04:57:54易语言节点去重源码,节点去重 -
Linux命令去重统计排序(awk命令去重,sort, uniq命令去重统计)
2017-06-28 16:35:08转载《利用Linux命令行进行文本按行去重并按重复次数排序》 转载《awk使用案例:通过awk去除重复行》 awk命令去重,sort, uniq命令去重统计 利用Linux命令行进行文本按行去重并按重复次数排序 linux命令行提供了... -
JS实现字符串去重及数组去重的方法示例
2020-10-18 14:22:48主要介绍了JS实现字符串去重及数组去重的方法,涉及javascript针对字符串与数组的遍历、判断、删除、添加等相关操作技巧,需要的朋友可以参考下 -
js字符串去重、json数组去重.txt
2019-11-02 10:31:27js对字符串(逗号隔开的)进行去重操作;js对json数组进行去重操作(指定某个属性),开发中经常遇到的前端小方法,简单实用 -
多种方法实现数组去重以及字符串去重(ES5常用去重方式、ES6快捷去重、hash表方式去重)
2018-02-26 09:38:26字符串去重跟数组去重大同小异,将字符串转成数组即可使用数组去重方法。ES5常用方式: function unique(array) { var result = []; for(var i = 0; i < array.length; i++) { if (result.indexOf(array[i... -
excel字段去重
2018-11-27 10:21:55Excel 字段去重,比如“12,123,12”,去重后为“12,123” -
vue数组去重 数组对象去重
2020-12-09 11:50:03常见普通数组去重 利用Es6 Set去重 unique(arr){ return Array.from(new Set(arr)) }, 利用filter unique(arr){ return arr.filter((item,index,arr)=>{ return arr.indexOf(item,0) === index; }); ... -
oracle去重,根据列去重,字段去重。
2018-11-26 19:07:01distinct去重在用in实在是不好用啊,速度堪忧! 根据字段去重,。 根据 id和sex 字段去除重复的行,并获取其它的列: select id,name,sex from( select a.*,row_number() over(partition by a.id,a.sex order by... -
lambda去重
2020-04-30 19:35:23字符串去重 List dataList = list.stream().distinct().collect(Collectors.toList()); 对象属性去重 //根据id去重 personList = personList.stream().collect(Collectors.collectingAndThen(Collectors.to... -
数据去重
2019-10-25 18:15:55①Excel去重,存在文件未完全加载问题,没有完全处理 •分成小文件 •重复值670 9441 •去重余1195 3141 ②Excel+程序 直接去重20191022 18:40 •读取数据存在读取不全,程序比较慢 •只读取原始数据: 1866 ... -
SQL去重
2019-07-04 14:29:53sql去重 当要查询的字段都是要去重的字段时则可以采用DISTINCT去重 select DISTINCT UID, Message from T_VOS where CreateDate >= '{0} 00:00:00' and CreateDate < '{1} 00:00:00 其它情况下采用以下方法... -
去重 属性_JS数组去重总结
2021-01-11 22:30:49数组去重,一般会在面试的时候才会碰到,要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看。在实际项目中碰到的数组去重,一般都是后台去处理,... -
去重 属性_Js数组去重总结
2021-01-12 04:07:59数组去重,一般会在面试的时候才会碰到,要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看。在实际项目中碰到的数组去重,一般都是后台去处理,... -
sql去重和代码去重
2017-12-26 17:40:54最近做项目,两张表都是百万数据的表,其中一主一从,客户要根据主表从从表中获取一条有效数据,从表数据很多脏数据,开始用sql去重发现速度很慢,后来用代码去重了 列表查询,一般就是几十条数据,先查出主表id的... -
txt文本去重
2018-03-26 16:35:18利用Java中hashmap 实现对TXT文本按行去重,进行去重操作后内容顺序不改变。 -
datatable去重
2020-04-07 11:20:58```csharp #region datatable去重 /// <summary> /// datatable去重 /// </summary> /// <param name="dtSource">需要去重的datatable</param> /// <pa...