从2M记录更快地迭代

时间:2019-03-28 17:59:18

标签: spring java-8 stream

我有一个List<Map<String,String>>。并且列表大小超过2M。 我还有一个List<String>,大小为100。

在Map中,我有一个名为Business Unit的键。 我只想存储来自List<Map<String,String>>的数据,这些数据的业务单位名称出现在List<String>中。

我想使用Java8的Stream API。有人可以建议如何实现此要求吗?

1 个答案:

答案 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());

}