我需要根据“值”将数组列表从最高到最低排序,并且我真的被卡住了:(基本上在这个项目中,他们将运行一个项目列表,并且该方法应该将具有最高值的列表放在第一位所以堡和即时通讯试图使用选择排序。谢谢您的帮助:)这是我目前的情况

public void pickMostExpensiveFirst(ArrayList<Item> totalListOfItems)
{
    int max, i ,j;
    Item temp;

    for (i = 0; i < totalListOfItems.size() - 1; i++)
    {
        max = i;

        for (j = i + 1; j < totalListOfItems.size(); j++)
        {
            if (totalListOfItems.get(max).getValue()
                    .compareTo(totalListOfItems.get(j).getValue()) > 0)
                max = j;
        }

        temp = totalListOfItems.get(i);
        totalListOfItems.set(i, totalListOfItems.get(max));
        totalListOfItems.set(max, temp);
    }
}

最佳答案

您的问题出在这里:

if (totalListOfItems.get(max).getValue().compareTo(totalListOfItems.get(j).getValue()) > 0)
  max = j;


在这里,您比较位置max和j处的项目,如果item(max)> item(j),则将max替换为j。这基本上是在寻找最低值,而不是最高值。切换它,您的问题就解决了。

09-27 09:37