gpt4 book ai didi

java - 如何检测我何时处于最后一个循环? ( lambda )

转载 作者:行者123 更新时间:2023-12-01 20:27:23 24 4
gpt4 key购买 nike

我写的是:

Arrays
.stream(docIDs.split(","))
.parallel()
.forEachOrdered(i -> {
try {
System.out.print(
Files.lines(Paths.get(spamDir +"\\cw12-" + i.substring(10,16) + ".txt"))
.filter(j -> j.matches("^(\\d\\d)\\s" + i))
.map(line -> line.substring(0, line.indexOf(" ")))
.findFirst()
.orElse("-1")
);
} catch (Exception e1) {
System.out.print("-1");
}
}
);

我正在打印字符串的一部分,如上所示。

我需要在每个元素(数字)之间放置“,”逗号。{我要检查我是否在最后一个元素中,并根据它添加“,”逗号。这就是为什么我需要知道我是否在最后一个元素中。}

我想了很多,但没有找到解决的方法。我该怎么办?

最佳答案

有几件事:

  • parallelforEachOrdered 基本上相互抵消。
  • 并行无论如何都不是一个好主意。
  • 您无法检测自己是否位于最后一个元素。
  • 无论如何,还有更好的解决方案。

    System.out.println(
    Arrays.stream(docIDs.split(","))
    .parallel() // included because OP included it
    .map(i -> {
    // this is how you should use Files.lines anyway
    try (Stream<String> lines = Files.lines(Paths.get(spamDir +"\\cw12-" + i.substring(10,16) + ".txt"))) {
    return lines
    .filter(j -> j.matches("^(\\d\\d)\\s" + i))
    .map(line -> line.substring(0, line.indexOf(" ")))
    .findFirst()
    .orElse("-1");
    } catch (IOException e1) {
    return "-1";
    }
    })
    .collect(Collectors.joining(",")));

...原始问题的答案的核心是使用Collectors.joining,而不是首先尝试执行顺序循环。

关于java - 如何检测我何时处于最后一个循环? ( lambda ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com