我正在尝试将以下代码转换为Java 8 Stream
以便嵌套for循环。
我试图将数据流用于外循环,但不确定如何编写条件并在那里分配变量。
final Map<String, String> events = new HashMap<>();
for (final Event s : result.getEvents()) {
String eventDetail = "";
for (final Data d : s.getData()) {
if (StringUtils.isNotEmpty(d.getValue()) && StringUtils.isNotEmpty(eventDetail)) {
eventDetail = eventDetail + "-" + d.getValue();
} else {
eventDetail = eventDetail + d.getValue();
}
}
events.put(s.getReferenceID(), eventDetail);
}
结果应为地图值。
答案 0 :(得分:0)
这是您想要的吗?
%{"cursor" => %{"session_id" => session_id, "offset" => String.to_integer(offset)}, "commit" => %{"path" => upload_image_path}}
答案 1 :(得分:0)
您的目标似乎是连接每个Data
实例的值成员
Event
变成一个用{-{1}}分隔的“-”,并将此String
映射到String
的参考ID。
这可以通过Event
完成:
Collectors.joining()
或者,如果您希望消除空值:
Map<String, String>
events = result.getEvents()
.stream()
.map(s -> new SimpleEntry<>(s.getReferenceID(),s.getData().stream().map(Data::getValue).collect(Collectors.joining("-"))))
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));