【问题标题】:Map for DTO with stream spring boot带有流弹簧引导的 DTO 映射
【发布时间】:2019-11-07 13:34:56
【问题描述】:

我对在 Spring Boot 中使用流将 dto 映射到键和值有疑问。我想创建类似示例的东西。你能解释一下我如何在不使用 Kryo 框架和复制序列化实例的情况下做到这一点吗?

例如 Person 是 Set 集合。

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

【问题讨论】:

  • 输入和预期输出是什么?
  • 我要解析设置为 Map<:id person>
  • PersonSet 是不同于 Person 的类型?或者您只是想从Set&lt;Person&gt; 中获取Map&lt;Integer, Person&gt;

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


【解决方案1】:

如果你的 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()));

【讨论】:

    【解决方案2】:

    假设 Person::id 是一个整数 - 要从 Set&lt;Person&gt; 创建 Map&lt;Integer, Person&gt; 你可以使用类似的东西:

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

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

    【讨论】:

      【解决方案3】:

      我认为这就是您要寻找的:

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

      【讨论】:

        猜你喜欢
        • 2011-09-19
        • 1970-01-01
        • 2017-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        • 1970-01-01
        • 2017-01-19
        相关资源
        最近更新 更多