如果scoreArray中对象的值小于scoreArray中的任何其他对象,我想删除该值。但是我不知道如何在循环中删除ArrayList对象。
hist(my.fun(`n`))
hist(my.fun(eval(n)))
答案 0 :(得分:6)
找到最小元素,然后删除所有出现的内容:
int min = scoreArray.stream().min(Integer::compare).orElse(0);
scoreArray.removeAll(Collections.singletonList(min));
此解决方案比更紧凑的scoreArray.removeAll(Collections.min(scoreArray))
更安全,
因为当NoSuchElementException
为空时,这不会抛出scoreArray
。
如果您只想删除第一次出现的最小值, 然后像这样写:
if (!scoreArray.isEmpty()) {
scoreArray.remove(scoreArray.stream().min(Integer::compare).get());
// alternatively: scoreArray.remove(Collections.min(scoreArray));
}
答案 1 :(得分:0)
我相信您只想删除最小的值。这只需要一个for循环。
ArrayList<Integer> scoreArray = new ArrayList<Integer>();
Integer smallestValue;
for (Integer i : scoreArray) {
smallestValue = (smallestValue == null || smallestValue < i) ? i : smallestValue;
}
scoreArray.removeAll(Collections.singleton(smallestValue));
修改强>
我对Java 8流不熟悉,但如果您使用的是Java 8+,那么请使用@Janos提供的其他答案。更好,更优雅。