代码之家  ›  专栏  ›  技术社区  ›  user51

在Java流中使用collectors.groupingBy修改返回的映射值类型

  •  4
  • user51  · 技术社区  · 7 年前

    我有以下的类定义 Entry -

    public class Entry {
        private String key;
        private String Value;
        // getters and setters
        // equals hashcode toString
    }
    

    我有清单 进入 数据库中的对象。 我想根据结果映射的键和值对它们进行分组 Set<value> .

    我试过了,最后得到了下面的代码。

    Map<String, Set<Entry>> groupedEntries =  
            entryList.findAll()
                     .stream()
                     .collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(), Collectors.toSet()));
    

    此代码的问题是结果类型为 Map<String, Set<Entry>> 但我想成为 Map<String, Set<String>> .

    单次收款可以吗?

    1 回复  |  直到 7 年前
        1
  •  7
  •   Ousmane D.    7 年前

    使用 mapping 收藏家:

    .collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(), 
                      Collectors.mapping(Entry::getValue, Collector.toSet())));