List stream 对象 属性去重
2024-09-22 19:02:50
单值去重不写了,记录对象去重
随手一个对象:
@Data
@AllArgsConstructor
public class Milk {
private Integer key;
private String value;
}
操作:
package com.yus.util; import java.util.*;
import java.util.stream.Collectors; import static java.util.Comparator.comparing;
import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection; public class main {
public static void main(String[] args) {
Milk milk0=new Milk(0,"a");
Milk milk1=new Milk(1,"b");
Milk milk2=new Milk(0,"c");
List<Milk> list=new ArrayList<>();
list.add(milk0);
list.add(milk1);
list.add(milk2);
//去重
List<Milk> uniqueMilk = list.stream().collect(
collectingAndThen(
toCollection(() -> new TreeSet<>(comparing(n->n.getKey()))),ArrayList::new)
); for (Milk m:uniqueMilk) {
System.out.println(m.toString());
} }
}
操作底层是set,视图,collection...一堆东西,还是有点意思的,不记录了,有兴趣可深入
任何Object类型去重...~
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors; public class TestMain { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> map = new HashMap<>();
map.put("id", "11");
map.put("orderno", "No.1");
list.add(map); Map<String, Object> map1 = new HashMap<>();
map1.put("id", "2222");
map1.put("orderno", "No.2");
list.add(map1); Map<String, Object> map2 = new HashMap<>();
map2.put("id", "33");
map2.put("orderno", "No.2");
list.add(map2); Map<String, Object> map3 = new HashMap<>();
map3.put("id", "444");
map3.put("orderno", "No.1");
list.add(map3); Map<Object, List<Map<String, Object>>> map0 = list.stream().collect(Collectors.groupingBy(e -> e.get("orderno"))); List<Map<String, Object>> collect = list.stream().filter(distinctByKey(n -> n.get("orderno")))
.collect(Collectors.toList()); collect.forEach(System.out::println);
} private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
ConcurrentHashMap<Object, Boolean> map = new ConcurrentHashMap<>();
return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
}
最新文章
- 【复位】FGPA的复位 [部分转]
- 《BI深入浅出》笔记
- 【c++】标准模板库STL入门简介与常见用法
- [整理归档]30 common tasks you perform using the GUI that you can do faster in Windows PowerShell
- js 拼接参数
- spring的依赖注入的最常见的两种方法
- Centos 6.4上面用Shell脚本一键安装mysql 5.6.15
- SDAU课程练习--problemO(1014)
- 【Eclipse】springMVC介绍与配置
- less is more,so 只记 less
- spring入门——applicationContext与BeanFactory的区别
- js封装Cookie操作 js 获取cookie js 设置cookie js 删除cookie
- css3 动画效果实现
- 微信h5支付源码DEMO参考
- Ubuntu安装MyEclise16 过程差不多
- 关于springMVC的一些常用注解
- js表单的focus()与blur()方法
- QQ好友的价值玩法 及如何搞到几万好友?
- YaoLingJump开发者日志(八)V1.1版本完成
- [LOJ2553]暴力写挂
热门文章
- PowerDesigner表创建脚本双引号问题
- poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
- Java httpClient 发送http请求
- PyQt5安装及ModuleNotFoundError: No module named &#39;PyQt5&#39;问题解决
- hdu 2126 Buy the souvenirs 【输出方案数】【01背包】(经典)
- Linux学习之挂载光盘和U盘(六)
- P1562 还是N皇后
- Android应用开发-数据存储和界面展现(一)
- BZOJ.3546.[ONTAK2010]Life of the Party(二分图匹配 ISAP)
- [Astar2008]Black-Whilte-Tree