我正在学习有关数据流的知识,但遇到了一个问题: 我想获取列表中的最小值并将其赋值给一个整数变量。 为此,我进行了以下操作:
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
作为结果。问题是IDE发出警告,表示在检查.isPresent
之前调用了Optional.get
方法。为解决这个问题,我使用了稍微不同的ifPresent
方法并尝试了以下操作:
int smallest = list.stream().min(Integer::compareTo).ifPresent(integer -> integer);
很不幸,这并不起作用,因为我收到了警告:Bad return type in Lambda, Integer cannot be converted to void.
我的问题最后是:如何在使用ifPresent检查的情况下将最小值赋给int smallest
变量?
ifPresent
接受一个Consumer
作为其参数,该消费者消耗输入值并返回无。 - Ali DehghaniList<Integer> list = Arrays.asList( 1, 2, 3 );
简化列表的初始化和添加。 - Gerold Broser