我有一个包含 map 的对象列表。
该对象如下所示:
public class SwiftObject {
private Map<String, String> metadata;
...
}
我正在尝试根据存储在其 Map 中的键和值来过滤我的对象。
我的过滤条件包含在另一个 Map 中。
我想过滤并保留 Map 包含在过滤器 Map 中的所有键/值的所有对象。
这是我写的代码:
List<? extends SwiftObject> swiftObjects = documentStore.listAllObjects(container);
Map<String, String> searchMetadata = gssDocument.getMetadataMap();
List<SwiftObject> filteredSwiftObjects = swiftObjects.stream()
.filter(swiftObject ->
searchMetadata.entrySet().stream()
.allMatch(entry -> entry.getValue().equals(swiftObject.getMetadata().get(entry.getKey())))
)
.collect(Collectors.ToList());
这是正确的方法还是可以重构/优化?
searchMetadata 映射不包含空值
最佳答案
使用 Map.equals(Map other)
检查两个映射是否包含相同的映射。如果您只需要检查 map 是否是另一个 map 的子集,请使用 map.entrySet().containsAll(other.entrySet())
.
关于java - 验证一个 Map 中的所有键/值对是否存在于另一个 Map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33024356/