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