使用Stream Spring Boot映射DTO

时间:2019-06-25 16:49:40

标签: java spring-boot collections java-8 java-stream

我对在Spring Boot中使用流将dto映射到键和值有疑问。我想创建类似示例的内容。您能解释一下不使用Kryo框架并复制序列化实例怎么办吗?

例如Person是Set集合。

Person
.stream()
.collect(
toMap(PersonSet::Id, and value something like 'this' ));

3 个答案:

答案 0 :(得分:3)

如果您的Dto看起来像这样:

public class Person {
    private Long id;
    //.. getter and setters
}

然后您可以像这样使用toMap

Set<Person> set = ...;
Map<Long, Person> result = set.stream()
        .collect(Collectors.toMap(Person::getId, Function.identity()));

答案 1 :(得分:2)

我想这就是您要寻找的东西:

final Set<Person> personSet = //create a set of persons;
final Map<Integer, Person> personMap = personSet.stream().collect(Collectors.toMap(Person::id, person -> person).

答案 2 :(得分:1)

假设Person::id是一个整数-要从Map<Integer, Person>中创建Set<Person>,可以使用类似以下内容的方法:

Set<Person> people = ...

Map<Integer, Person> collect = people.stream()
          .collect(Collectors.toMap(Person::getId, Function.identity()));

使用Collectors::toMap收集器和Function::identity