我需要根据“值”对数组列表从最高到最低进行排序,我真的被困住了:(基本上在这个项目中,他们将运行一个项目列表,这个方法应该将项目与最高值优先,所以堡垒和我尝试使用选择排序。提前感谢您的帮助:)这是我目前所拥有的
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,如果 item(max) > item(j),则将 max 替换为 j。这基本上是在寻找最低值,而不是最高值。切换过来,你的问题就解决了。
关于java - 对 ArrayList 进行选择排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19617552/