java - 比较 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;
解决方案
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())));
}
推荐阅读
- angular - 在 Cordova/Ionic 4 移动应用程序中提供原生广告?
- git - 如何在没有私钥的情况下添加具有 SSH URL 的子模块
- context-free-grammar - 模糊的 CFG 是否有可能转换为 CNF 并变得明确?
- java - API针对不同场景返回不同的对象类型
- nodes - 节点的 Networkx 和 matplotlib 颜色图;不同网络的相同地图
- html - 是否可以将多个视频加载到 HTML 5 视频播放器中并让它们一个接一个地按顺序播放?
- javascript - 如何停止跟踪 AdRoll Pixel?
- python - 在python中完成系列(数据框)
- algorithm - 查找每列具有不同值的子集
- laravel - 如何使用 Laravel 确定用户在线状态/离线状态?