【发布时间】:2011-01-29 22:44:51
【问题描述】:
一个带有名字的列表:(未排序)例如[paul,follow,mark]
另一个整数列表:例如 [5, 2, 6]
第二个列表中的值是每个人(姓名)“选择”的数字,所以 保罗5号,犯规2号,马克6号。
我正在尝试根据第二个列表的值按降序对姓名列表进行排序。我不能使用地图,因为我在程序的其他场合需要这两个列表。
使用排序方法我做了我得到这样的列表:[paul, mark, fur]
如您所见,它没有按我想要的方式排序。
正确的应该是:[mark,paul,foul]
但我找不到代码的错误。
public ArrayList<String> sortNames(ArrayList<Integer> results){
String tmp;
for (int k=0; k<Names.size()-1; k++) {
boolean isSorted=true;
for (int i=1; i<Names.size()-k; i++) {
if (results.get(i)>results.get(i-1) ) {
tmp=Names.get(i);
Names.set(i,Names.get(i-1));
Names.set(i-1,tmp);
isSorted=false;
}
}
if (isSorted) break;
}
return Names;
}
编辑!!!在下面的答案的帮助下,代码是:
public ArrayList<String> sortNames(ArrayList<Integer> results){
String tmp2;
int tmp;
for (int k=0; k<Names.size()-1; k++) {
boolean isSorted=true;
for (int i=1; i<Names.size()-k; i++) {
if (results.get(i)>results.get(i-1) ) {
tmp=results.get(i);
results.set(i,results.get(i-1));
results.set(i-1,tmp);
tmp2=Names.get(i);
Names.set(i,Names.get(i-1));
Names.set(i-1,tmp2);
isSorted=false;
}
}
if (isSorted) break;
}
return Names;
}
此代码正常工作(对于小列表) 我只是询问为什么它不适用于 ImageIcon 之类的对象。有什么想法吗?
【问题讨论】:
-
“我不能使用地图,因为在我的程序的其他场合我需要这两个列表。”究竟要做什么?
-
例如,其他类需要列表。是否可以在地图上对它们进行排序,然后单独使用它们? ://
-
写下你在网上找到的任何排序算法 quick/merge/shell/whatever 并且当你交换时,交换两个列表
-
致任何提供 Map 用途的人:它不允许 duplicates
-
我知道它不能,但多图(例如来自 Guava)可能会完成这项工作。