[英]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.