如何在循环java中使用ArrayList remove

nal*_*jin -2 java loops arraylist

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

ArrayList<Integer> scoreArray = new ArrayList<Integer>();

    for (int k = 0; k < people ; k++) {
            int compare = scoreArray.get(k);


            for (int j = 0; j < people; j++) {
                if(compare < scoreArray.get(j)){

                    //scoreArray.remove(k);

                    }
                } 

            }
Run Code Online (Sandbox Code Playgroud)

Sto*_*ica 6

找到最小元素,然后删除所有出现的内容:

int min = scoreArray.stream().min(Integer::compare).orElse(0);
scoreArray.removeAll(Collections.singletonList(min));
Run Code Online (Sandbox Code Playgroud)

这个解决方案比更紧凑更安全scoreArray.removeAll(Collections.min(scoreArray)),因为NoSuchElementExceptionscoreArray空的时候不会抛出.

如果只想删除第一次出现的最小值,那么写如下:

if (!scoreArray.isEmpty()) {
  scoreArray.remove(scoreArray.stream().min(Integer::compare).get());
  // alternatively: scoreArray.remove(Collections.min(scoreArray));
}
Run Code Online (Sandbox Code Playgroud)