我有以下代码
List<Integer> li = new ArrayList<Integer>();
li.add(3);li.add(5);
Stream at = li.stream();
Optional<Integer> o = at.min(Comparator.naturalOrder());
if (o.isPresent()) {System.out.println(o.get());}
Stream gt = li.stream();
Optional<Integer> i = gt.max(Comparator.reverseOrder());
System.out.println(i.get());
为什么我得到的输出为“ 3 3”而不是“ 3 5”。请澄清。
其背后的原因是所使用的Comparator
。您正在排序之后反转元素,同时从中取出max
。当然了max
的倒数是min
,您将得到相同的结果。
解决方案是替换
Optional<Integer> i = gt.max(Comparator.reverseOrder());
与
Optional<Integer> i = gt.max(Comparator.naturalOrder());