用Collectors对List去重】的更多相关文章

在学习本篇之前,最好对java8新特性有一定的了解.可以参考:Java8新特性--流(Stream) 场景:有一个实体的List集合,需要根据实体中的某个字段对List去重 要想去重,可以考虑使用TreeSet.先来看看TreeSet的用法: @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class Dish { private String id; private String name; } private sta…
场景:有一个实体的List集合,需要根据实体中的某个字段对List去重 Collectors.collectingAndThen方法:将流中的数据通过Collector计算,计算的结果再通过Function处理一下(这里是将TreeSet转为ArrayList.即相当于将最终结果又经过了new ArrayList<>(treeSet)) List<实体类> distinctClass = value.stream().collect(Collectors .collectingAn…
List<Object> newList = ll.stream().distinct().collect(Collectors.toList()); //jdk8去重操作…
Java 8 函数式编程风格 Java 迄今为止最令人激动的特征.这些新的语言特征允许采用函数式风格来进行编码,我们可以用这些特性完成许多有趣的功能.这些特性如此有趣以至于被认为是不合理的.他们说会影响计算速度,但是虽然是真的,但是存在皆合理. 所以我们摒弃缺点,研究优点. 演练 今天的新闻联播播出的主要内容有:list转map,list使用lambda求和,等聚合运算,映射分类,分组,排序,归约等算法示例 你们就静鸡鸡的看吧 ------还演练了parallelStream并行流 [林凌你个鸭…
如果要处理int[] 转换成 List<Integer>这种形式的,可以用下面这个方法: List<Integer> orgIds = Arrays.stream(reqVo.organizationIds).boxed().collect(Collectors.toList()); 过滤去重可以用下面这个方法: List<Integer> newOrgIds =orgIds .stream().distinct().collect(Collectors.toList(…
一.强大的Stream API 除了Lambda表达式外,Java8另外一项重大更新便是位于java.util.stream.*下的Stream API Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对 集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作. 使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数 据库查询.也可以使用 Stream API 来并行执行操作.简而言之, Stream API 提供了一种高效且易于使用的处理数据…
xl_echo编辑整理,欢迎转载,转载请声明文章来源.更多IT.编程案例.资料请联系QQ:1280023003 百战不败,依不自称常胜,百败不颓,依能奋力前行.——这才是真正的堪称强大!! --- 开发工具eclipse ```javapackage com.echo.demo; import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors; public class GetStreamLo…
关于lambda表达式的一些学习,例举出来. 1.学生实体类 public class Student { private String name; private int age; public String getName() { return name; } public Student setName(String name) { this.name = name; return this; } public int getAge() { return age; } public Stu…
1. 如何使用匹配模式 List<String> strs = Arrays.asList("a", "a", "a", "a", "b"); boolean aa = strs.stream().anyMatch(str -> str.equals("a"));//只要有一个满足返回true boolean bb = strs.stream().allMatch(st…
一.概述 Stream 是一组用来处理数组.集合的API,Stream API 提供了一种高效且易于使用的处理数据的方式. Java 8 中之所以费这么大的功夫引入 函数式编程 ,原因有两个: 代码简洁函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环. 多核友好,Java函数式编程使得编写并行程序从未如此简单,你需要的全部就是用用一下parallel()方法 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的…
Java8新特性steam流 一.包装数据类型 @Test public void main22() { List<Integer> list = new ArrayList<Integer>(){{ add(7); add(5); add(1); add(2); add(8); add(4); add(3); add(6); add(3); add(6); add(3); add(6); }}; // 过滤 List<Integer> filterList = lis…
调用: //重复项有9.5.1.2 int[] ints = new int[]{9,4,7,8,2,5,1,6,2,5,9,1}; arrayIntTest(ints); ///////////////////////////// //重复项有9.5.1.2 Integer[] integers = new Integer[]{9,4,7,8,2,5,1,6,2,5,9,1}; arrayIntegerTest(integers); /////////////////////////////…
以下内容转自: 作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-library-features 本文谢绝转载,如需转载需征得作者本人同意,谢谢. -------------------------------------内容分割线--------------------------------------------------------- 深入理解Java…
package com.pers.Stream; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; /** * 数组去重demo * * @author hoobey */ public class RemoveDuplicatedDataTest { public static void main(String[] args) { String[] strArr…
单值去重不写了,记录对象去重 随手一个对象: @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 s…
1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺序 public static void ridRepeat1(List<String> list) { System.out.println("list = [" + list + "]"); List<String> listNew = ne…
private static List<User> list = new ArrayList<User>(); public static void main(String[] args) { list = Arrays.asList( new User(1, "a", 10), new User(4, "d", 19), new User(5, "e", 13), new User(2, "b", 1…
转载:http://zh.lucida.me/blog/java-8-lambdas-inside-out-library-features/ 关于 深入理解 Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法) 深入理解 Java 8 Lambda(类库篇——Streams API,Collector 和并行) 深入理解 Java 8 Lambda(原理篇——Java 编译器如何处理 lambda) 本文是深入理解 Java 8 Lambda 系列的第二篇,主要介…
import static java.util.Comparator.comparingLong; import static java.util.stream.Collectors.collectingAndThen; import static java.util.stream.Collectors.toCollection; // 根据id去重 List<Person> unique = persons.stream().collect( collectingAndThen( toCol…
List<String> list = new ArrayList<>(); list.add("111"); list.add("111"); list.add("aaa"); list.add("AAA"); list.add("aaa"); list.add("差异项"); list.add("差异项"); // 不排序 List<…
1.有时候有两个list对象,我们想要去重,比如: List<User> userList和List<Person>personList 想通过User的id和Person的id进行去重,去掉userList中的User的id不等于personList中的Person的id的对象. List<User> userList= userList.stream()            .filter(user-> !personList.stream()       …
  import java.util.ArrayList;import java.util.List;import org.apache.shiro.SecurityUtils;import org.apache.shiro.subject.Subject;import java.util.*;import java.util.stream.Collectors; import static java.util.Comparator.comparing;import static java.ut…
编写工具类 public class DistinctUtil { public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHashMap<>(); return t -> seen.putIfAbsent(keyExtractor.apply(t…
如:角色去重处理 baseRoleList = baseRoleList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(role -> role.getRoleId()))), ArrayList::new)); 原文链接:https://blog.csdn.net/qq_28988969/article/d…
List<User> distinctList = new ArrayList();User user1 = new User();user1.setId("111");distinctList.add(user1);User user2 = new User();user2.setId("222");distinctList.add(user2);User user3 = new User();user3.setId("333");…
list中的对象某个属性存在重复时将重复的对象去重 //根据skuAttrValueName值去重 List<SkuValue> uniqueSkuValues = skuValues.stream().collect( Collectors.collectingAndThen(Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(o -> o.getSkuAttrValueName())))…
1.拥有自定义对象 MyUser @Data public class MyUser { private String userName; private String passWord; } 2.编写自定义去重方法实现 /** * 根据list中对象某些字段去重 * @param list 需要去重的list * @return 返回去重后的list */ private static List<MyUser> removeDuplicateOutputField(List<MyUse…
java8实现列表去重,java8的stream和lambda的使用实例 通过普通的方式也可以达到去重的效果,但是借助java8新特性可以很方便的实现列表去重,测试demo如下 实体类: public class Person { private int id; private String name; private int age; public Person() { } public Person(int id, String name, int age) { this.id = id;…
//定义一个100元素的集合,包含A-Z List<String> list = new LinkedList<>(); for (int i =0;i<100;i++){ list.add(String.valueOf((char)('A'+Math.random()*('Z'-'A'+1)))); } System.out.println(list); //统计集合重复元素出现次数,并且去重返回hashmap Map<String, Long> map = l…
JDK 8 中Stream流中去重的方法 1.简单的去重,可以使用distinct()方法去重,该方法是通过比较equals和hashcode值去去重, 2.复杂的去重, 例如,在一个JavaBean的集合中,去除某个属性重复的对象 @Override public List<RptDayMonthTargetVO> queryTarget() { List<RptDayMonthTarget> list = targetService.selectMonthTarget(); /…