kre*_*nkz 1 java java-stream collectors
有没有办法根据属性的值将对象列表转换为字符串列表?我有一个实体标签
public class Tag {
private int tagID;
private String description;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个带有 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]]
Run Code Online (Sandbox Code Playgroud)
我需要的是:
List<String> output = ["121,244,331", "244,122"]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我把这个放在一起:
String description = tags.stream().map(Tag::getDescription).collect(Collectors.joining( ";" ));
Run Code Online (Sandbox Code Playgroud)
输出一个标签的结果
String description = "121,244,331"
Run Code Online (Sandbox Code Playgroud)
当然,我可以通过循环运行它并将结果附加到数组中,但我想知道是否有更优雅的方式 - 甚至是单行?
您可以使用Collectors.groupingBy按标签 ID 分组,然后使用加入描述Collectors.joining
List<String> res = new ArrayList<>(tagList.stream().collect(
Collectors.groupingBy(Tag::getTagID,
Collectors.mapping(Tag::getDescription, Collectors.joining(",")))).values());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |