我想了解流和遇到问题: 我想获得列表的最小值并将其分配给一个int变量。 对于我做了以下内容:Java 8流“ifPresent”
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int smallest = list.stream().min(Integer::compareTo).get();
System.out.println(smallest);
这工作得很好,我得到1
结果。 问题是在检查.isPresent
之前,IDE会提示Optional.get
。 要解决,我使用的略有不同ifPresent
方法和尝试以下操作:
int smallest = list.stream().min(Integer::compareTo).ifPresent(integer -> integer);
不幸的是,因为我得到警告,这并不工作:Bad return type in Lambda, Integer cannot be converted to void.
我的问题总算是:我怎样才能分钟值赋给int smallest
变量与检查ifPresent?
你首先必须明白为什么你得到一个可选的,而不是一个整数:因为该流可能是空的,因此可能没有任何最小值。然后,如果流为空,则需要决定想要得到的结果。然后,一旦你知道你想要什么,你就可以通过查看Optional的文档来选择正确的方式来获得结果。 –
'ifPresent'接受'Consumer'作为它的参数,它消耗输入值并不返回任何内容。 –