删除java中arraylist中最小的2个元素?

Jes*_*sio 2 java arraylist

我有一个整数的arraylist,我需要计算除最小的两个整数之外的整数的平均值.我一直在尝试不同的方法,但想想我要做的是找到min1,删除它然后找到min2然后删除它.

public double computeAverageWithoutLowest2()
  {
    ArrayList<Student> newscores = new ArrayList<Student>(scores);
    int newtotalScores=0;
    int newavg=0; 
    int min1 = 0;
    int min2 = 0;

    min1 = newscores.get(0).getScore();

    for (int i = 0; i< newscores.size(); i++)
    {
      if (newscores.get(i).getScore() < min1)
      {
        min1 = newscores.get(i).getScore();
      }
    }
Run Code Online (Sandbox Code Playgroud)

现在我想从我的arraylist中删除min1.我显然已经尝试过newscores.remove(min1); 这不起作用.我怎样才能找出min1数组中的哪个点然后将其删除?

任何帮助都会非常感谢!!

好了,现在看完评论之后我把代码更改为:

ArrayList<Student> newscores = new ArrayList<Student>(scores);
    int newtotalScores=0;
    int newavg=0; 

    int minPos1 = 0;
    int minPos2 = 0;
    int min1 = newscores.get(0).getScore();
    int min2 = newscores.get(0).getScore();

    for(int i = 0; i < newscores.size(); i++) 
    {
      if(newscores.get(i).getScore() < min1) 
      {
        min1 = scores.get(i).getScore();
        minPos1 = i;
      } 
    }
    newscores.remove(minPos1);


    for(int j = 0; j < newscores.size(); j++)
    {
      if(newscores.get(j).getScore() < min2)
      {
        min2 = scores.get(j).getScore();
        minPos2 = j;
      }
    }
    newscores.remove(minPos2);
Run Code Online (Sandbox Code Playgroud)

这种方法可以删除min1,但不能删除min2,而只是删除min1删除的相同位置.

Mar*_*oun 5

你为什么不简单地使用remove,indexOf并且min:

newscores.remove(newscores.indexOf(Collections.min(newscores)));
Run Code Online (Sandbox Code Playgroud)

如果要删除两个最小的项目,请执行两次.

  • 在没有迭代器的情况下从集合中删除项目是非常危险的.不要这样做. (2认同)