Я пытаюсь отсортировать список массивов String по его 3-му элементу. Третий элемент - это значение даты. Я уже несколько часов пытаюсь решить эту проблему, поменяв местами, но все еще не могу решить эту проблему. Для моего текущего List
я не верю, что Arrays.sort()
было бы идеальным, поэтому я сортирую это через l oop.
List<String[]> Record = new ArrayList<>();
Record.add(new String[] { "0001047166", "11047161", "20191223", "20200916" });
Record.add(new String[] { "0001047166", "11047162", "20191223", "20200916" });
Record.add(new String[] { "0001047166", "11047163", "20191222", "20200916" });
Record.add(new String[] { "0001047166", "11047166", "20191218", "20200916" });
Record.add(new String[] { "0001047359", "11047359", "20191217", "20200917" });
int size = Record.size();
int swapIndex = 0;
for (int i = 0; i < size-1; i++) {
String[] currentArray = Record.get(i); //get array on current index
String date = currentArray[2]; //get the date on 3rd position, index 2 of current array
swapIndex = i;
for (int j = i + 1; j < Record.size(); j++) {
String[] nextArray = Record.get(j); //get the next array (i + 1)
String otherDate = nextArray[2]; //get the date on 3rd position, index 2 of next arrray
if (date.compareTo(otherDate) > 0) {
String[] currArray = currentArray; //save the current array to temp
//swap
Record.set(swapIndex, nextArray);
Record.set(j, currArray);
swapIndex++;
}
}
}
//Display result
for (String[] a : Record) {
System.out.println(a[2]);
}
Я получаю
20191222 (wrong)
20191217
20191218
20191223
20191223
Желаемый результат:
20191217
20191218
20191222
20191223
20191223
Буду признателен за любые идеи или предложения.
Спасибо.