如何迭代哈希映射列表并将哈希映射映射到模型

时间:2018-04-05 10:35:16

标签: java

我面临着迭代哈希映射列表的问题,我希望用模型映射特定的哈希映射。

result = {ArrayList@10441}  size = 3
 0 = {HashMap@10443}  size = 3
  0 = {HashMap$Node@10453} "Id" -> "3"
  1 = {HashMap$Node@10454} "Name" -> "name3"
  2 = {HashMap$Node@10455} "TimeSpent" -> "6543"
 1 = {HashMap@10444}  size = 3
 2 = {HashMap@10445}  size = 3

我试图以这样的方式迭代:

list.forEach(e -> SourceTargetMapper.MAPPER.toModel(new Source((Map<String, Object>) e)))

'toModel()'返回这样一个模型:

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Foo {

    private Long id;

    private String name;

    private Long timeSpent;
}

但我无法收集映射模型再次列出。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

foreach()不是为了映射流元素而设计的:它是一个使用Consumer“消耗”流的终端操作。

相反,将map()collect()一起使用(假设ModeltoModel()的返回类型:

List<Model> models = 
list.stream()
    .map(e -> SourceTargetMapper.MAPPER.toModel(new Source((Map<String, Object>) e)))
    .collect(Collectors.toList());