如何在循环java中使用ArrayList remove

时间:2017-07-15 09:05:40

标签: java loops arraylist

如果scoreArray中对象的值小于scoreArray中的任何其他对象,我想删除该值。但是我不知道如何在循环中删除ArrayList对象。

hist(my.fun(`n`))
hist(my.fun(eval(n)))

2 个答案:

答案 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提供的其他答案。更好,更优雅。