对于同一个类的字段,我可以使用
stream().map(String::valueOf).collect(Collectors.joining(","));
如何在一行中使用stream从给定的RejectItem列表中加入Item的id?
class RejectItem {
Item item;
String reason;
}
class Item {
Long id;
Date createdOn;
}
// ..................
List<RejectItem> ri;
String commaSepIdString = ri.stream ??
你可以使用像这样的lambda表达式。
List<RejectItem> rejectedItems = ...
String result = rejectedItems.stream()
.map(ri -> ri.item.id.toString())
.collect(Collectors.joining(","));
你也可以使用map函数来建立一个 "路径",通过函数调用,例如
String commaSepIdString = ri.stream().map(ri -> ri.item).map(i -> i.id).map(String::valueOf).collect(Collectors.joining(","));
你可以使用这样的东西。不要直接使用.toString(),因为你使用的是Long而不是long,万一你的类有空值。
list.stream().map(item -> String.valueOf(item.item.id)).collect(Collectors.joining(","))
我建议为你的类添加getter和setter。使用lombok注解来减少代码。