Один список с именами: (несортированный) например [пол, фол, отметка]
Другой список с целыми числами: например, [5, 2, 6]
Значения во втором списке - это числа, "выбранные" каждым человеком (именем), поэтому У Павла номер 5, номер фола - 2, номер метки - 6.
Я пытаюсь отсортировать список имен по значениям второго списка в порядке убывания. Я не могу использовать карту, так как мне нужны оба списка в других случаях в моей программе.
С помощью метода сортировки, который я сделал , я получил список вроде этого: [paul, mark, 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. Есть идеи?