Sorting a list based on another list's values - Java
java, sorting
Solution
Get rid of the two Lists. If the data is related then the data should be stored together in a simple class. Then the entire class is added to a list where you can sort on the individual properties if required. You can use a Bean Comparator to sort this List however you desire.
Problem
One list with names:(unsorted) e.g [paul, foul, mark] Another list with integers: e.g [5, 2, 6] The values on the second list are the numbers "selected" by each person(name), so paul has number 5, foul's number is 2, mark's number is 6. I'm trying to sort the names' list based on the values of the second list on a descending order. I cant use a map as i need both lists on other occasions on my program. With the sorting method i did i get a list like that: [paul, mark, foul] As you can see, its not sorted as i would want. The correct one would be: [mark,paul,foul] But i cant find the fault on the code. ``` 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!!! with the help of the answers below,the code is: ``` 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; } ``` This code works properly(for small lists) I've just the query why it doesnt work for objects like ImageIcon. Any ideas?