gpt4 book ai didi

java - 为什么 java Stream.sorted() 给出不同的结果?

转载 作者:行者123 更新时间:2023-12-02 01:10:56 26 4
gpt4 key购买 nike

这是我的代码:

@Test
public void testStream() {
List<String> list = Arrays.asList("I", "love", "you", "too");
Collections.sort(list, (s1, s2) -> {
if (s1 == null)
return -1;
if (s2 == null)
return 1;
return s1.length() - s2.length();
});
list.stream().sorted().forEach(System.out::println);
list.forEach(l -> {
System.out.println(l);
});
}

结果是:

{I,love,too,you}
{I,you,too,love}

我了解到 forEach() 是一个终端操作,正确的顺序是最后一个?

最佳答案

不带参数的

.sorted() 为您提供自然顺序。但是,您为 Collections.sort 提供了一个长度比较器。

因此,第一行按字母顺序排序,但第二行按长度排序 - 完全按照您的要求。

如果将相同的比较器传递给 .sorted(...),您将得到相同的结果。

关于java - 为什么 java Stream.sorted() 给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418908/

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