使用java流从列表创建地图列表

时间:2018-04-18 13:15:16

标签: java data-structures java-8 java-stream

我有一个学生列表,我想将其转换为地图列表,每个地图都包含特定的学生数据。

学生对象:

class Student {
  String name;
  String age;

  String getName() {
    return name;
  }
}

我有一个学生列表,我想将其转换为应如下所示的地图列表:

[
  { name: "Mike",
    age: "14"
  }, 
  { name: "Jack",
    age: "10"
  }, 
  { name: "John",
    age: "16"
  },
  { name: "Paul",
    age: "12"
  } 
]

有没有办法将List<Student>转换为List<Map<String, String>>?每张地图的键应该是名称&amp;年龄。

2 个答案:

答案 0 :(得分:3)

使用Map.of的Java-9解决方案:

myList.stream()
      .map(s -> Map.of("name", s.getName(), "age", s.getAge()))
      .collect(Collectors.toList());

答案 1 :(得分:2)

你的意思是:

List<Student> listStudent = new ArrayList<>();
List<Map<String, String>> result = listStudent.stream()
        .map(student -> {
            return new HashMap<String, String>() {
                {
                    put("age", student.getAge());
                    put("name", student.getName());
                }
            };
        }).collect(Collectors.toList());

例如,如果你有:

List<Student> listStudent = new ArrayList<>(
        Arrays.asList(
                new Student("Mike", "14"),
                new Student("Jack", "10"),
                new Student("John", "16"),
                new Student("Paul", "12")
        ));

结果应如下所示:

[{name=Mike, age=14}, {name=Jack, age=10}, {name=John, age=16}, {name=Paul, age=12}]