stream交集、并集、去重、对象根据属性去重

import lombok.Data;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.TreeSet;
import java.util.stream.Collectors;

/**
 * 根据对象的某一个属性进行去重
 */
@Data
public class Test {

    private String id;

    private String name;

    private Integer age;

    public Test(String id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public static void main(String[] args) {


        ArrayList list1 = new ArrayList<>();
        list1.add(new Test("1", "A", 1));
        list1.add(new Test("2", "B", 2));
        list1.add(new Test("3", "C", 3));
        list1.add(new Test("4", "D", 4));

        ArrayList list2 = new ArrayList<>();
        list2.add(new Test("1", "E", 5));
        list2.add(new Test("4", "F", 6));

        list1.addAll(list2);

        ArrayList collect = list1.stream()
                .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet(Comparator.comparing(Test::getId))), ArrayList::new));
        collect.forEach(System.out::println);
    }
}
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 并集
 */
@Data
public class Test {


    public static void main(String[] args) {
        ArrayList list1 = new ArrayList<>();
        list1.add("1");
        list1.add("2");
        list1.add("3");
        list1.add("4");

        ArrayList list2 = new ArrayList<>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        list2.add("4");
        list2.add("5");
        list2.add("6");

        list1.addAll(list2);

        List collect = list1.stream().distinct().collect(Collectors.toList());
        collect.forEach(System.out::println);
    }
}

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 交集
 */
@Data
public class Test {


    public static void main(String[] args) {
        ArrayList list1 = new ArrayList<>();
        list1.add("1");
        list1.add("2");
        list1.add("3");
        list1.add("4");

        ArrayList list2 = new ArrayList<>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        list2.add("4");
        list2.add("5");
        list2.add("6");

        List collect = list1.stream().filter(s -> list2.contains(s)).collect(Collectors.toList());
        collect.forEach(System.out::println);
    }


}

你可能感兴趣的:(stream交集、并集、去重、对象根据属性去重)