单值去重不写了,记录对象去重

随手一个对象:

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

最新文章

  1. 【复位】FGPA的复位 [部分转]
  2. 《BI深入浅出》笔记
  3. 【c++】标准模板库STL入门简介与常见用法
  4. [整理归档]30 common tasks you perform using the GUI that you can do faster in Windows PowerShell
  5. js 拼接参数
  6. spring的依赖注入的最常见的两种方法
  7. Centos 6.4上面用Shell脚本一键安装mysql 5.6.15
  8. SDAU课程练习--problemO(1014)
  9. 【Eclipse】springMVC介绍与配置
  10. less is more,so 只记 less
  11. spring入门——applicationContext与BeanFactory的区别
  12. js封装Cookie操作 js 获取cookie js 设置cookie js 删除cookie
  13. css3 动画效果实现
  14. 微信h5支付源码DEMO参考
  15. Ubuntu安装MyEclise16 过程差不多
  16. 关于springMVC的一些常用注解
  17. js表单的focus()与blur()方法
  18. QQ好友的价值玩法 及如何搞到几万好友?
  19. YaoLingJump开发者日志(八)V1.1版本完成
  20. [LOJ2553]暴力写挂

热门文章

  1. PowerDesigner表创建脚本双引号问题
  2. poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
  3. Java httpClient 发送http请求
  4. PyQt5安装及ModuleNotFoundError: No module named &#39;PyQt5&#39;问题解决
  5. hdu 2126 Buy the souvenirs 【输出方案数】【01背包】(经典)
  6. Linux学习之挂载光盘和U盘(六)
  7. P1562 还是N皇后
  8. Android应用开发-数据存储和界面展现(一)
  9. BZOJ.3546.[ONTAK2010]Life of the Party(二分图匹配 ISAP)
  10. [Astar2008]Black-Whilte-Tree