使用流JAVA 8将map转换为特定的dto对象

  • 本文关键字:对象 dto 转换 map JAVA java-8
  • 更新时间 :
  • 英文 :


我有一个类似

Map<String, List<Student>>
AAAA=[com.demo.Student@67b6d4ae, com.demo.Student@34b7bfc0]
BBBB=[com.demo.Student@366e2eef]

我想映射到Room,像new Room("AAAA", [com.demo.Student@67b6d4ae, com.demo.Student@34b7bfc0])

结果将是List of Room contains Room "AAAA"and Room "BBBB">

我想把上面的映射转换成DTO

class Room {
public String number;
public List<Student> students;
Room(String number, List<Student> students) {
this.number = number;
this.students = students
}
}

我想使用JAVA流,但收集器。groupingBy not work for my.

map.stream()
.collect(Collectors.groupingBy(Student::getNumber, Collectors.mapping(roomFunction, Collectors.toList())))
.values().stream(); 

任何人都可以帮助我,谢谢。

要将map转换为需要键和值来创建的对象列表,需要流式传输map的条目并根据这些条目构建对象:

List<Room> rooms = map.entrySet().stream()
.map(e -> new Room(e.getKey(), e.getValue()))
.collect(Collectors.toList());

最新更新