List<實體類>根據多個字段去重


現在有一個實體類Person,屬性有三個,分別是name,age,address,根據這三個屬性將list<Person>中三個字段都相同的數據進行去重。

//創建list,添加數據
        List<Person> list = new ArrayList<>();
        list.add(new Person("Tom", 15, "America"));
        list.add(new Person("Tam", 16, "China"));
        list.add(new Person("Tom", 15, "Japan"));
        list.add(new Person("Tcm", 18, "Russia"));
        list.add(new Person("Tom", 15, "America"));
        list.add(new Person("Tdm", 16, "America"));
        list.add(new Person("Tem", 17, "America"));

// 根據三個字段去重
        List<Person> lst = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(
                () -> new TreeSet<>(Comparator.comparing(o -> o.getName() + "#" + o.getAge() + "#" + o.getAddress()))),
                ArrayList::new));

// 遍歷輸出一下
        lst.forEach(person -> System.out.println(person.toString()));

//結果:

Person [name=Tam, age=16, address=China]
Person [name=Tcm, age=18, address=Russia]
Person [name=Tdm, age=16, address=America]
Person [name=Tem, age=17, address=America]
Person [name=Tom, age=15, address=America]
Person [name=Tom, age=15, address=Japan]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM