【发布时间】:2015-10-08 19:26:45
【问题描述】:
我有一个包含地图的对象列表。 对象看起来像这样:
public class SwiftObject {
private Map<String, String> metadata;
...
}
我正在尝试根据存储在其 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 映射不包含空值
【问题讨论】: