有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

比较Java8中的对象列表

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

我在Java-6中做了大量工作,现在转到Java 8。有没有一种有效的方法可以在Java8中重写下面的逻辑

这将对象列表与单个对象进行比较,如果列表中的某个对象具有匹配的“标识符”参数值,则返回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;

共 (2) 个答案

  1. # 1 楼答案

    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())));
    
    }
    
  2. # 2 楼答案

    private boolean compareOrder(OrderConfig givenDeviceConfig, List<OrderConfig> masterConfigList) {
        //do null and empty checks here
        return masterConfigList
                .stream()
                .anyMatch(o -> o.getIdentifier().equalsIgnoreCase(givenDeviceConfig.getIdentifier()));
    }
    

    您可以使用this进行列表比较。如果您不想包括一个库,有很多关于stackoverflow的答案可供比较Collections