有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为每个键打印地图中列表项的大小

我有一个JavaPOJO用户,它包含用户的名字。有一个映射,其中包含根据学校名称映射的用户列表。像下面这样的

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()方法中提到的,我想打印学校名称和学校学生人数列表。 我如何在Java8中做到这一点


共 (2) 个答案

  1. # 1 楼答案

    I have java POJO User which contains firstName of the user.

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

    您可以对地图进行流式处理,并使用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"));
      }
    }
    
  2. # 2 楼答案

    如果您希望迭代整个入口集,这可能很有用

    public String toString() {
       StringBuilder userMap = new StringBuilder();
       userMapOfSchool.forEach((k, v) ->
                    userMap.append(k).append(" school has ").append(v.size()).append("noOfStudents."));
       return userMap.toString(); 
    }