首页 > 解决方案 > 为每个键打印地图中列表项的大小

问题描述

我有包含用户名的 java POJO 用户。有一张地图,其中包含映射到学校名称的用户列表。类似下面的东西

class User{
 String name;
}

class UserMap{
 Map<String,List<User> userMapOfSchool;

public String toString(){
 //return "schoolName has noOfStudents" for each key in the map
}
}

正如上面 toString() 方法中提到的,我想打印列表学校名称和学校的学生人数。我如何在 Java 8 中做到这一点?

标签: javajava-8tostring

解决方案


我有包含用户名的 java POJO 用户。

它不是您的要求,因为您不想显示用户的任何信息......

您可以流式传输地图并使用收集器收集它joining()

class UserMap{
  Map<String,List<User> userMapOfSchool;

  @Override
  public String toString(){
   return
   userMapOfSchool.entrySet()
                  .stream()
                  .map(e -> e.getKey() + " has " + e.getValue().size() + " students")
                  .collect(joining("\n"));
  }
}

推荐阅读