【发布时间】:2020-05-23 05:02:00
【问题描述】:
public static int getMin(int[] arr, int min,int max,int a){
Integer[] test = Arrays.stream(arr).boxed().toArray(Integer[]::new);
List<Integer> list =null;
list = new ArrayList(Arrays.asList(test));
list.removeAll(Collections.singleton(0));
min = Collections.min(list);
max = Collections.max(list);
if(a == 0) {
return min;
} else {
return max;
}
}
列表项
Exception in thread "main" java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(ArrayList.java:862)
at java.util.Collections.min(Collections.java:596)
at Solution.getMin(Solution.java:47)
这个异常的原因是什么?
【问题讨论】:
-
您的列表有多少个非
0元素? -
它取决于输入,对于那个问题,输入是在运行时给出的
-
附带说明,这是一种从数组中获取最小值或最大值的非常低效的方法。您的第一行确实已经包含一个 Stream 操作,所以为什么不让 Stream 首先返回预期的结果:
IntStream is = Arrays.stream(arr).filter(i -> i != 0); OptionalInt result = a == 0? is.min(): is.max();然后,您必须决定如果结果为空该怎么办,例如return result.orElse(0);
标签: java arraylist collections