gpt4 book ai didi

java - 选择列表的元素直到满足 Java 8 Lambdas 的条件

转载 作者:太空狗 更新时间:2023-10-29 22:51:44 25 4
gpt4 key购买 nike

我正在尝试转换思路,以函数式方式思考,最近遇到一种情况,我需要从列表中选取元素,直到满足条件为止,但我找不到一种简单自然的方法来实现这一点。显然我还在学习。

假设我有这个列表:

List<String> tokens = Arrays.asList("pick me", "Pick me", "pick Me",
"PICK ME", "pick me and STOP", "pick me", "pick me and Stop", "pick me");

// In a non lambdas was you would do it like below
List<String> myTokens = new ArrayList<>();
for (String token : tokens) {
myTokens.add(token);
if (token.toUpperCase().endsWith("STOP")) {
break;
}
}

提前感谢您的投入

注意:在发布这篇文章之前,我阅读了 Limit a stream by a predicate但我看不出如何使这个答案适应我的问题。任何帮助将不胜感激。

最佳答案

如果您真的必须使用 Streams API,请保持简单并使用索引流:

int lastIdx = IntStream.range(0, tokens.size())
.filter(i -> tokens.get(i).toUpperCase().endsWith("STOP"))
.findFirst()
.orElse(-1);

List<String> myTokens = tokens.subList(0, lastIdx + 1);

或者如果您想要一个不受原始列表支持的独立副本,则从子列表中创建一个新的 List

关于java - 选择列表的元素直到满足 Java 8 Lambdas 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32290278/

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