java流连接字段,它本身就是一个类。

问题描述 投票:0回答:1

对于同一个类的字段,我可以使用

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 ??
java collections java-8 stream java-stream
1个回答
2
投票

你可以使用像这样的lambda表达式。

List<RejectItem> rejectedItems = ...

String result = rejectedItems.stream()
        .map(ri -> ri.item.id.toString())
        .collect(Collectors.joining(","));

1
投票

你也可以使用map函数来建立一个 "路径",通过函数调用,例如

String commaSepIdString = ri.stream().map(ri -> ri.item).map(i -> i.id).map(String::valueOf).collect(Collectors.joining(","));

0
投票

你可以使用这样的东西。不要直接使用.toString(),因为你使用的是Long而不是long,万一你的类有空值。

list.stream().map(item -> String.valueOf(item.item.id)).collect(Collectors.joining(","))

我建议为你的类添加getter和setter。使用lombok注解来减少代码。

© www.soinside.com 2019 - 2024. All rights reserved.