【问题标题】:Faster iteration from 2M records从 2M 条记录中更快地迭代
【发布时间】:2019-03-28 17:59:17
【问题描述】:

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

在地图中,我有一个名称为 Business Unit 的键。 我只想存储来自List<Map<String,String>> 的那些数据,其业务部门名称出现在List<String> 中。

我想使用 Java8 的 Stream API。谁能建议如何实现这一要求?

【问题讨论】:

  • 你试过什么?至少展示您使用传统循环的尝试。另外,List<Map<String,String>> 应该只是一个Map<String,String>

标签: spring java-8 stream


【解决方案1】:

我不知道我是否正确理解了您的问题。你试过这样吗:

@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());

}

【讨论】:

  • 你有机会测试吗?
猜你喜欢
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
相关资源
最近更新 更多