lambda - 映射结果上的 Collectors.groupingBy 到嵌套映射

标签 lambda java-8 grouping

我有以下代码

 Map<Long,String> timeMap= new HashMap<>();
    Map<Boolean, List<Map.Entry<Long,String>>> output= timeMap.entrySet().parallelStream()
            .filter(map -> map.getKey()-Instant.now().toEpochMilli()>120000)
            .collect(Collectors.groupingBy(o -> o.getKey()<600000));

我希望我的输出是一个 map 嵌套 map

 Map<Boolean, List<Map.Entry<Long,String>>> output --> Map<Boolean, Map<Long,String>> output

有人可以帮我编写一个 BiFunction 来实现此目的吗?

目前我正在使用以下方法来生成输出。

 Map<Long, String> trueMap = output.get(true).stream()
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
    Map<Long, String> falseMap = output.get(false).stream()
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

    Map<Boolean,Map<Long,String>>  booleanMapMap = new HashMap<>();
    booleanMapMap.put(true,trueMap);
    booleanMapMap.put(false,falseMap);

最佳答案

嵌套的收集器将是更好的方法:

Map<Boolean, Map<Long, String>> collect = timeMap.entrySet().stream()
    .filter(e -> e.getKey() - Instant.now().toEpochMilli() > 120_000)
    .collect(
        Collectors.partitioningBy(e -> e.getKey() < 600_000, 
            Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)
        ));

关于lambda - 映射结果上的 Collectors.groupingBy 到嵌套映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52040152/

相关文章:

sql-server-2000 - 分组时sql server获取第一个值

r - 创建列出一个变量与另一个变量分组的值的data.table

Java lambda 不适用于完整定义

java - LambdaConversionException 与泛型 : JVM bug?

java - 在嵌套对象上使用 lambda 和流

java - Java 13 和 Java 8 中的交叉编译

javascript - 使用 jQuery 按 JSON 数组分组

c++17:lambda 到 std::function 转换失败

java - 列表 foreach 方法

python - 如何防止 lambda 函数局部变量在 python 中更改?