Stream流對List集合篩選重複欄位

重案組之虎,曹達華發表於2020-12-21

實現:針對物件集合實現重複欄位校驗和重複統計

實體類如下:

@Data
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name;
    private Integer age;
}

目標一:找出使用者集合中重複的名稱

private static void test6(){
        List<User> list = new ArrayList<>();
        list.add(new User("張三",1));
        list.add(new User("張三",1));

        List<String> l =list.parallelStream().collect(Collectors.groupingBy(User::getName, Collectors.counting()))
                .entrySet().parallelStream()
                .filter(entry -> entry.getValue() >1).map(Entry::getKey).collect(Collectors.toList());

        System.out.println(l.toString());
    }

輸出結果:

在這裡插入圖片描述

目標二:找出使用者集合中重複的名稱和統計重複次數

    private static void test6(){
        List<User> list = new ArrayList<>();
        list.add(new User("張三",1));
        list.add(new User("張三",1));

        Map<String, Long> l =list.parallelStream().collect(Collectors.groupingBy(User::getName, Collectors.counting()));

        System.out.println(l.toString());
    }

結果:
在這裡插入圖片描述

相關文章