Сортировка массива с нулевыми значениями
У меня есть программа, которая позволяет пользователю удалять элемент из массива, и я пытаюсь сортировать их в алфавитном порядке с помощью compareTo(); через цикл for. Однако нулевые значения дают мне проблемы. Например, массив с нулевыми значениями:
String[] myArray = {"Apple", "Banana", null, "Durian", null, null, "Grapes"};
Когда Java сравнивает их и читает нулевое значение, это дает мне исключение NullPointerException.
Есть ли способ сортировать этот массив с нулевыми значениями на задней панели? Например:
{"Apple", "Banana", "Durian", "Grapes", null, null, null}
Я знаю, что использование Vectors может решить проблему, но мне просто интересно, есть ли способ, которым я могу просто это сделать, не меняя свой массив на векторы.
Ответы
Ответ 1
попробуйте это
Arrays.sort(myArray, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
return o1.compareTo(o2);
}});
он выдает требуемый порядок
Ответ 2
напишите свой собственный Comparator
, который принимает нулевые значения, и передайте этот компаратор методу Arrays.sort(
)