java - 删除java中数组列表中最小的2个元素?

标签 java 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();
      }
    }

现在我想从数组列表中删除 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);

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

最佳答案

为什么不简单地使用 remove , indexOfmin :

newscores.remove(newscores.indexOf(Collections.min(newscores)));

如果您想删除两个最小的项目,请执行两次。

关于java - 删除java中数组列表中最小的2个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19883788/

相关文章:

java - 安卓表情实现

java - Java中转到文件行号

java - 在 Java 中按属性值对对象 ArrayList 进行排序

java - 在 Java 中将值附加到列表的元素

java - ArrayList 大小为零 - 从其他类访问

python - 如何使文件中的每一行成为包含整个文件的列表的子列表?

java - 迭代Java时从数组中删除对象

java - 远程桌面关闭

java - 使用 preparedStatement 查询速度慢,但使用 executeQuery 查询速度慢

java - 获取系统日志的完整输出(终端)