溪流 min()
和 max()
在Lambda Expression with Comparator中,方法只返回第一个和最后一个元素,不返回minmax元素。max()
.
public class Hello {
public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList<>();
al.add(0);
al.add(5);
al.add(10);
al.add(15);
al.add(20);
al.add(25);
System.out.println(al);
Integer l = al.stream()
.min((a, b) -> -a.compareTo(b))
.get();
System.out.println(l);
Integer l2 = al.stream()
.max((a, b) -> -a.compareTo(b))
.get();
System.out.println(l2);
}
}
輸出: 分别为25和0
你可以简单地使用 compareTo
而不说明 a
和 b
为比较。
使
al.stream().min((a, b) -> -a.compareTo(b))
做
al.stream().min(Integer::compareTo).get();
您已经使用了这种方法(compareTo
) Comparable
Integer
在这里,你却否定了这一结果。逆转 的补码。
a.compareTo(b)
返回一个正数(最可能是1),如果 a
大于 b
如果它们相等,则结果为0,如果 b > a
你会得到一个负数的结果。由于您已经否定了它,订单结果将与您想要的完全相反 (min
⇒ max
和 max
⇒ min
).