Я хочу отсортировать массив на основе другого массива с другими значениями.
Учтите следующее:
Ссылочный массив: {"A","B","C"}
Получено Массив1: {"C","A","B"}
Получено Массив2: {"cc","aa","bb"}
Получено Массив3: {"123","asrd","sdhg"}
значения, соответствующие
A -> aa and asrd
B -> bb and sdhg
C -> cc and 123
Я хочу отсортировать полученные массивы 1, 2 и 3 в порядке, указанном моим ссылочным массивом.
Ожидаемый результат:
Полученный массив после сортировки: {"A","B","C"}
Получено Array2 после сортировки: {"aa","bb","cc"}
Получено Array3 после сортировки: {"asrd","sdhg","123"}
PS: Порядок элементов ссылочного массива может быть любым ([A,B,C]
или [C,B,A
] и т. Д.). Полученные массивы 2 и 3 должны быть отсортированы соответственно.
Я знаю, как сортировать полученный массив 1 в порядке моего массива ссылок. Я пробовал логику для сортировки полученных массивов 2 и 3, но результат, который я получаю, неверен
String[] referenceArray = new String[] { "A", "B", "C" };
String[] obtainedArray1 = new String[] { "C", "A", "B" };
String[] obtainedArray2 = new String[] { "cc", "aa", "bb" };
String[] obtainedArray3 = new String[] { "123", "asrd", "sdhg" };
final List<String> referenceArrayList= Arrays.asList(referenceArray);
ArrayList<String> obtainedArray1_List= new ArrayList<String>(Arrays.asList(obtainedArray1));
ArrayList<String> obtainedArray2_List= new ArrayList<String>(Arrays.asList(obtainedArray2));
ArrayList<String> obtainedArray3_List= new ArrayList<String>(Arrays.asList(obtainedArray3));
// Sorting ObtainedArray1_List - This works Fine
Collections.sort(obtainedArray1_List, Comparator.comparing(s -> referenceArrayList.indexOf(s)));
//Sorting obtainedArray2_List - Not Working
Collections.sort(obtainedArray2_List, Comparator.comparing(s -> referenceArrayList.indexOf(obtainedArray1[obtainedArray2_List.indexOf(s)])));
Результат, полученный Array2_List после сортировки: ["aa","cc","bb"]
Ожидаемый результат ["aa","bb","cc"]