繁体   English   中英

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

[英]Why java Stream.sorted() gives different result?

那是我的代码:

@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(...) ,您将获得相同的结果。

暂无
暂无

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

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