繁体   English   中英

如何根据 java 中的属性值将对象列表转换为字符串列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM