假设有以下实体类 Supplier:

public class Supplier {
    private String supplierFollowSn;

    public Supplier(String supplierFollowSn) {
        this.supplierFollowSn = supplierFollowSn;
    }

    public String getSupplierFollowSn() {
        return supplierFollowSn;
    }

    public void setSupplierFollowSn(String supplierFollowSn) {
        this.supplierFollowSn = supplierFollowSn;
    }
}

现在我们有一个包含多个 Supplier 对象的集合,我们希望根据集合中的 supplierFollowSn 字段获取重复数量以及重复数据。可以使用 Java 8 的 Stream API 和 lambda 表达式来实现:

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

public class Main {
    public static void main(String[] args) {
        List<Supplier> suppliers = new ArrayList<>();
        suppliers.add(new Supplier("A001"));
        suppliers.add(new Supplier("A002"));
        suppliers.add(new Supplier("A001"));
        suppliers.add(new Supplier("A003"));
        suppliers.add(new Supplier("A002"));

        Map<String, Long> duplicates = suppliers.stream()
                .collect(Collectors.groupingBy(Supplier::getSupplierFollowSn, Collectors.counting()))
                .entrySet()
                .stream()
                .filter(entry -> entry.getValue() > 1)
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        System.out.println("重复数量:" + duplicates.size());

        List<String> duplicateData = suppliers.stream()
                .map(Supplier::getSupplierFollowSn)
                .filter(supplierFollowSn -> duplicates.containsKey(supplierFollowSn))
                .distinct()
                .collect(Collectors.toList());

        System.out.println("重复数据:" + duplicateData);
    }
}

运行上述代码,将会输出:

重复数量:2
重复数据:[A001, A002]

说明集合中的 supplierFollowSn 字段有两个重复的值,分别是 A001 和 A002


原文地址: https://www.cveoy.top/t/topic/hLny 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录