lamda -- 重复元素处理

    技术2022-07-21  92

    依赖的jar包

    <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>

    LamdaDuplicate.java

    package com.example.demo.util; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class LamdaDuplicate { public static void main(String[] args) { System.out.println("获取list集合中重复的元素:"); test1(); System.out.println("\n计算集合中平方,并且过滤重复的数字:"); test2(); } /** * 获取list集合中重复的元素 */ public static void test1() { //1. 初始化数据 List<String> list = new ArrayList<String>(); list.add("1"); list.add("1"); list.add("2"); list.add("2"); list.add("3"); //2. 获取重复的元素 List<String> repeatList = list.stream() .collect(Collectors.toMap(e -> e, e -> 1, (a,b) -> a + b)) .entrySet().stream() .filter(entry -> entry.getValue() > 1) .map(entry -> entry.getKey()) .collect(Collectors.toList()); //3. 输出 System.out.println("逗号分隔:" + StringUtils.join(repeatList.toArray(), ",")); } /** * 计算集合中平方,并且过滤重复的数字 */ public static void test2() { //1. 初始化集合 List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); //2. 获取对应的平方数 List<Integer> squaresList = numbers.stream().map(i -> i*i) .distinct() .collect(Collectors.toList()); //3. 输出 squaresList.stream().forEach(System.out::println); } }

    输出

    获取list集合中重复的元素: 逗号分隔:1,2 计算集合中平方,并且过滤重复的数字: 9 4 49 25
    Processed: 0.026, SQL: 9