У меня есть два ArrayLists
A: 5 3 2 6 1 4
B: 0 1 2 0 3 2
Я хочу отсортировать B на основе соответствующих значения из A, поэтому я должен получить: 3 2 1 2 0 0
Когда я использую следующие коды:
ArrayList<Integer> D=new ArrayList<Integer>(B);
Collections.sort(B, Comparator.comparing(s -> A.get(D.indexOf(s))));
или:
ArrayList<Integer> D = new ArrayList<Integer>(B);
Collections.sort(B, new Comparator<Integer>(){
public int compare(Integer a,Integer b){
return Integer.compare(A.get(D.indexOf(a)),A.get(D.indexOf(b)));
}
});
Это будет сработали, если элементы в B были уникальными, но так как 2 и 0 имеют 2 вхождения, каждый раз, когда вызывается A.get(D.indexOf(2))
, возвращается 2 и никогда не возвращается.
Итак, я наконец получаю: 3 2 2 1 0 0
Может кто-нибудь помочь мне с компаратором, который занимается этим? Я не хочу делать полный алгоритм сортировки, но такие решения также приветствуются.