List stream 对象 属性去重

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

随手一个对象:

@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...一堆东西,还是有点意思的,不记录了,有兴趣可深入

猜你喜欢

转载自my.oschina.net/u/3829444/blog/2873147