首页 > 解决方案 > 比较 Java 8 中的对象列表

问题描述

这篇文章可能是重复的,对此表示歉意。

我在 Java-6 中进行了广泛的工作,现在转向 Java 8。有没有一种有效的方法可以在 Java 8 中重写以下逻辑?

这会将对象列表与单个对象进行比较,true如果列表中的某个对象具有匹配的“标识符”参数值,则返回。

private boolean compareOrder(UserOrderDTO.OrderConfig givenDeviceConfig, List<UserOrderDTO.OrderConfig> masterConfigList) {
    boolean isValidService = false;

    for(UserOrderDTO.OrderConfig eachRecord:masterConfigList) {
        if(eachRecord.getIdentifier()!=null && givenDeviceConfig.getIdentifier()!=null) {

            if(eachRecord.getIdentifier().trim().equalsIgnoreCase(givenDeviceConfig.getIdentifier().trim()) ) {
                isValidService = true;
                break;
            }

        }
    }
    return isValidService;
}

另外,如果我想比较两个列表,请有任何建议

 List<UserOrderDTO.OrderConfig> oneList = some value;
 List<UserOrderDTO.OrderConfig> twoList = some value;

标签: javajava-8

解决方案


private boolean compareOrder(UserOrderDTO.OrderConfig givenDeviceConfig, List<UserOrderDTO.OrderConfig> masterConfigList) {

    return givenDeviceConfig.getIdentifier() != null
            && masterConfigList.stream().anyMatch(
                    p -> p.getIdentifier() != null
                         && p.getIdentifier().trim().equalsIgnoreCase(givenDeviceConfig.getIdentifier().trim()));

}

.

private static boolean compareOrderLists(List<UserOrderDTO.OrderConfig> list1, List<UserOrderDTO.OrderConfig> list2) {

    return list1.stream().anyMatch(
            p -> p.getIdentifier() != null 
                 && list2.stream().anyMatch(
                        p2 -> p2.getIdentifier() != null 
                              && p2.getIdentifier().trim().equalsIgnoreCase(p.getIdentifier())));

}

推荐阅读