gpt4 book ai didi

java - Stream.dropWhile() 不会在两个不同的值中返回正确的值

转载 作者:搜寻专家 更新时间:2023-11-01 01:24:40 27 4
gpt4 key购买 nike

我正在尝试学习 Java-9 中的新功能 我开始了解 Stream 的 dropWhile 方法,但它在两种不同的情况下返回不同的值。这是我的代码

package src.module;

import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.List;

public class Test {

public static void main(String[] args) {

String s[] = new String[3];
s[0] = "Hello";
s[1] = "";
s[2] = "World";
List<String> value = Stream.of(s).dropWhile(a -> a.isEmpty()).collect(Collectors.toList());

System.out.println(value);

List<String> values = Stream.of("a", "b", "c", "", "e", "f").dropWhile(d -> !d.isEmpty())
.collect(Collectors.toList());
System.out.println(values);

}
}

这是我得到的答案

[Hello, , World]
[, e, f]

我认为在第一个条件下它应该打印 [,World]。提前致谢。

最佳答案

dropWhile method ,在 Java 9 中引入,将删除与谓词匹配的最长起始元素集。

Returns, if this stream is ordered, a stream consisting of the remaining elements of this stream after dropping the longest prefix of elements that match the given predicate.

因为您的条件是该项目为空,并且第一个项目不为空,所以没有删除任何内容,而 ["Hello", "", "World"] 完好无损。

最后,当您用相反的条件调用 dropWhile 时,不为空,前 3 项匹配并被删除,留下 ["", "e", "f "],这是剩余的项目。

这是预期的行为。

关于java - Stream.dropWhile() 不会在两个不同的值中返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52613584/

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