[英]How transform a list of objects to a list of strings based on the value of a property in java?
有没有办法根据属性的值将对象列表转换为字符串列表? 我有一个实体标签
public class Tag {
private int tagID;
private String description;
}
我得到一个标签列表及其 id 和描述:
[Tag [tagID=1, description=121], Tag [tagID=1, description=244], Tag [tagID=1, description=331], Tag [tagID=2, description=244], Tag [tagID=2, description=122]]
我需要的是:
List<String> output = ["121,244,331", "244,122"]
到目前为止,我把这个放在一起:
String description = tags.stream().map(Tag::getDescription).collect(Collectors.joining( ";" ));
输出一个标签的结果
String description = "121,244,331"
当然,我可以通过循环运行它并将 append 的结果存储到一个数组中,但我想知道是否有更优雅的方式 - 甚至是单线?
您可以使用Collectors.groupingBy
按标签 ID 分组,然后使用Collectors.joining
加入描述
List<String> res = new ArrayList<>(tagList.stream().collect(
Collectors.groupingBy(Tag::getTagID,
Collectors.mapping(Tag::getDescription, Collectors.joining(",")))).values());
我认为您正在寻找:
List<String> result = tags.stream()
.collect(Collectors.groupingBy(Tag::getTagID))
.values()
.stream()
.map(t -> t.stream().map(Tag::getDescription).collect(Collectors.joining( ";" )))
.collect(Collectors.toList());
Output
[121;244;331, 244;122]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.