简体   繁体   English

如何使用 java 中的 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"];

both the lists store string only两个列表都只存储字符串

here is the following code which gives output that I want这是下面的代码,它给出了我想要的 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"]; output =["partner1/2022-05-18","partner2/2022-05-18","partner1/2022-05-19","partner2/2022-05-19"];

but I want to reduce the line of code using stream.但我想减少使用 stream 的代码行。 Anyone could help to get stream API code任何人都可以帮助获得 stream API 代码

Assuming the result [partner1/2022-05-18, partner1/2022-05-19, partner2/2022-05-18, partner2/2022-05-19] is what you want:假设结果[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();

Another way can be另一种方法可以是

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]

Here is one way.这是一种方法。

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);

prints印刷

[partner1/2022-05-18, partner1/2022-05-19, partner2/2022-05-18, partner2/2022-05
-19]
  • The above uses nested streams to process each List.以上使用嵌套流来处理每个列表。
  • String.join - takes a delimiter and a variable number of arguments and concatenates them, separated by the delimiter. String.join - 采用分隔符和可变数量的 arguments 并将它们连接起来,由分隔符分隔。
  • flatMap flattens the nested streams into one for conversion to a list. flatMap将嵌套的流扁平化为一个以转换为列表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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