![](/img/trans.png)
[英]How to update each element in a List in Java 8 using Stream API
[英]How to add each element in of two list using stream api in java
partnersName =["partner1","partner2"];
totalDates = ["2022-05-18","2022-05-19"];
兩個列表都只存儲字符串
這是下面的代碼,它給出了我想要的 output
for (int i = 0; i < partnersName.size(); i++) {
if (totalDates.isEmpty()) {
totalDates.add(partnersName.get(i));
} else {
for (int j = 0; j < totalDates.size(); j++) {
totalDates.set(j, partnersName.get(i) +"/" +totalDates.get(j));
}
}
}
output =["partner1/2022-05-18","partner2/2022-05-18","partner1/2022-05-19","partner2/2022-05-19"];
但我想減少使用 stream 的代碼行。 任何人都可以幫助獲得 stream API 代碼
假設結果[partner1/2022-05-18, partner1/2022-05-19, partner2/2022-05-18, partner2/2022-05-19]
是你想要的:
List<String> result = partnersName.stream().<String>mapMulti((s, stringConsumer) -> totalDates.forEach(d -> stringConsumer.accept(s + "/" + d))).toList();
另一種方法可以是
List<String> result = partnersName.stream()
.flatMap(x -> totalDates.stream().map(y -> x.concat("/"+y)))
.collect(Collectors.toList());
//output: [partner1/2022-05-18, partner1/2022-05-19, partner2/2022-05-18, partner2/2022-05-19]
這是一種方法。
List<String> partnerName = List.of("partner1","partner2");
List<String> totalDates = List.of("2022-05-18","2022-05-19");
List<String> result = partnerName.stream()
.flatMap(name -> totalDates.stream()
.map(date->String.join("/", name, date)))
.toList();
System.out.println(result);
印刷
[partner1/2022-05-18, partner1/2022-05-19, partner2/2022-05-18, partner2/2022-05
-19]
String.join
- 采用分隔符和可變數量的 arguments 並將它們連接起來,由分隔符分隔。flatMap
將嵌套的流扁平化為一個以轉換為列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.