当前位置: 首页 > 知识库问答 >
问题:

如何使用Collectors.GroupingBy获得HashMap值

欧渝
2023-03-14

我最近开始学习流和Lambda表达式,但我的代码遇到了一个问题。

public class StreamApplicationDemo {
    public static void main(String[] args) {

        List<String> names = new ArrayList<>
              (Arrays.asList("Amir", "Hatef","Mehran", "Mojtaba",
                    "Mohammad", "Ali", "Davood", "Reza", "Mohsen"));


        Map<Integer, List<String>> groupByLengthMap = names.
            stream().
                collect(Collectors.groupingBy(name -> name.length()));
        System.out.println(groupByLengthMap);


        Map<Integer, Long> groupByLengthNumberMap = names.
                  stream().
                  collect(Collectors.groupingBy(name -> name.length(), 
        Collectors.counting()));
              System.out.println(groupByLengthNumberMap);


    }
}
 {3=[Ali], 4=[Amir, Reza], 5=[Hatef], 6=[Mehran, Davood, Mohsen], 7=[Mojtaba], 8= 
 [Mohammad]}
 {3=1, 4=2, 5=1, 6=3, 7=1, 8=1}

共有1个答案

鞠鸿雪
2023-03-14

试试这个。

public static void main(String[] args) {
    List<String> names = List.of("Amir", "Hatef", "Mehran", "Mojtaba",
        "Mohammad", "Ali", "Davood", "Reza", "Mohsen");
    Map<Integer, Map<Integer, List<String>>> result = names.stream()
        .collect(Collectors.groupingBy(String::length))
        .entrySet().stream()
        .collect(Collectors.toMap(Entry::getKey,
            e -> Map.of(e.getValue().size(), e.getValue())));
    System.out.println(result);
}

产出:

{3={1=[Ali]}, 4={2=[Amir, Reza]}, 5={1=[Hatef]}, 6={3=[Mehran, Davood, Mohsen]}, 7={1=[Mojtaba]}, 8={1=[Mohammad]}}
 类似资料:
  • 问题内容: 我试图在Android中的HashMap上进行搜索,但出现问题: 考虑以下示例: 现在,我要对其进行迭代并获取每种颜色的值,并希望在“ Toast”中显示。如何显示? 问题答案:

  • 我有一个hashmap,看起来像这样: 我的ImageRecipeMap对象如下所示: 我想获取所有ImageID列表,并使用Java8流创建一个总的ImageID列表。到目前为止,这就是我所拥有的,但我的collect上似乎有一个编译错误:

  • 问题内容: 我的Go程序需要知道所有系统和用户进程的当前cpu使用率。 我如何获得? 问题答案: 我遇到了类似的问题,但从未找到轻量级的实现。这是我的解决方案的精简版,可以回答您的特定问题。我按照tylerl的建议对文件进行采样。您会注意到,我在两次采样之间等待3秒以匹配top的输出,但是在1或2秒的情况下我也取得了不错的结果。我在go例程中的循环中运行类似的代码,然后在需要其他go例程时访问cp

  • 问题内容: 我需要对象A的“列表”或“地图”。…此列表将从另一个ArrayList中添加。当A的参数相等时,认为对象A等于另一个。 我的问题是我只想添加列表中不存在的对象。我不知道在这两种实现方式之间。使用ArrayList或HashMap 哪一个会增加添加大量对象(超过1000个对象或更多对象)的速度更快?我的问题是否有更好的模式??? 问题答案: 首先,我要大胆地指出这是 两个完全不同的数据结

  • 我正在使用Spring-Boot和Spring Security,并使用第三方的OAuth2登录名。 SSO提供程序有一个accesstokenendpoint,它返回以下JSON 引用来自accesstokenendpoint的JSON中的值。我如何访问这些值给定我的设置?

  • 它返回的第一个日期,我是一个菜鸟在正则表达式,所以请帮助我,谢谢