我有一个List<Map<String,String>>
。并且列表大小超过2M。
我还有一个List<String>
,大小为100。
在Map中,我有一个名为Business Unit的键。
我只想存储来自List<Map<String,String>>
的数据,这些数据的业务单位名称出现在List<String>
中。
我想使用Java8的Stream API。有人可以建议如何实现此要求吗?
答案 0 :(得分:0)
我不知道我是否正确理解了您的问题。您是否以这种方式尝试过:
@Test
public void testFilter() {
try {
List<String> filtered = new ArrayList<String>();
entities.parallelStream().forEach(entity -> {
filtered.addAll(filterMap(entity));
});
logger.info("Keys {} dimensione {} filtered {} dimensione {}", keys, keys.size(), filtered, filtered.size());
} catch (Exception e) {
logger.error("Errore filter ", e);
}
}
private List<String> filterMap(Map<String, String> entity) {
return entity.keySet().parallelStream().filter(key -> keys.contains(key)).collect(Collectors.toList());
}