如何在循环java中使用ArrayList remove

如何在循环java中使用ArrayList remove,java,loops,arraylist,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 (

如果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);

                    }
                } 

            }
ArrayList scoreArray=new ArrayList();
for(int k=0;k
我相信您只想删除最小的值。这只需要一个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));
ArrayList scoreArray=new ArrayList();
整数最小值;
for(整数i:scoreArray){
smallestValue=(smallestValue==null | | smallestValue
编辑:


我不擅长Java8流,但是如果您使用的是Java8+,那么请使用@Janos提供的另一个答案。更好、更优雅。

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

int min = scoreArray.stream().min(Integer::compare).orElse(0);
scoreArray.removeAll(Collections.singletonList(min));
此解决方案比更紧凑的
scoreArray.removeAll(Collections.min(scoreArray))
更安全, 因为当
scoreArray
为空时,这将不会引发
NoTouchElementException

如果只想删除最小值的第一个匹配项, 然后这样写:

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

那么你想去掉最小的值吗?你看过了吗。我建议从这里开始。
scoreArray.remove(Collections.min(scoreArray))@4castleoo!你的回答很漂亮。它会删除最小值的所有副本吗?
Collections.min(scoreArray)
的可能副本稍微简单一点。@4castle
Collections.min(scoreArray)
更简单,但保存更少,因为如果
scoreArray
为空,它将抛出
NoSuchElementException
。但这是一件值得一提的好事,我的回答中补充道。@janos,这取决于您定义的“不太安全”。如果列表不应为空,则可以使用例外情况。@4如果解决方案a在满足额外条件X时起作用,而解决方案B总是在没有进一步了解的情况下起作用,我认为这意味着解决方案B更安全。代码正确性的条件越少,精神负担就越小,出错的空间就越小
Collections.min
应该设计为返回
可选
而不是抛出。我想从scoreArray中获取一个元素,并将其与scoreArray中的其他元素进行比较。如果只有一次,这个元素比另一个元素小,我想把它去掉。这个代码可以解决这个问题吗?我不知道我可以把这个代码放在哪里。您能再给我一些帮助吗?不,我想从scoreArray中获取一个元素,并将其与scoreArray中的其他元素进行比较。如果只有一次,这个元素比另一个元素小,我想把它去掉。因此,应该删除多个值。但是谢谢你的帮助:)@sujin对不起,我不明白你在问什么。我的代码就是这么做的?