【发布时间】:2021-05-07 20:41:51
【问题描述】:
我将举一个我需要的小例子。我有这个简单的豆子:
public class Item {
private String name;
private String code;
private Category category;
//getters and setters omitted for brevity
}
public class SimpleItem {
private String name;
private String code;
//getters and setters omitted for brevity
}
我需要将Collection<Item> 映射和分组到Map<Category,List<SimpleItem>>。我试过这样的事情
public class itemMapper {
public Map<Category,List<SimpleItem>> map(Collection<Item> items){
return items.stream()
.map(this::mapToSimpleItem)
.collect(groupingBy(Item::getCategory));
}
private SimpleItem mapToSimpleItem(Item item){
//
}
}
问题是映射后,字段类别不再存在。有什么想法吗?
【问题讨论】:
-
你使用的是
.map(this::mapToSimpleItem),所以在收集部分你有一个Stream<SimpleItem>而不是Stream<Item> -
OP知道,OP基本上是在问如何分组然后映射,第一个答案解释了这一点。
标签: java collections stream java-stream groupingby