Java.lang.NoSuchMethodError: не сортировать метод интерфейса (Ljava/util/Comparator;) исключение при сортировке arraylist android
Я пытаюсь сортировать ArrayList
в Java в приложении Android, но я получаю это странное исключение.
код:
eventsList.sort(new Comparator<Event>() {
@Override
public int compare(Event event, Event t1) {
return event.getEventStartDate().compareTo(t1.getEventStartDate());
}
});
Исключение:
java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;)V in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /system/framework/core-libart.jar)
Ответы
Ответ 1
ArrayList#sort()
был добавлен на уровне API 24, а время выполнения ниже уровня API 24 не имеет этого метода. Похож на то, что ваш compileSdkVersion
находится в 24, поэтому вам нужно скомпилировать код.
Используйте Collections.sort(list, comparator)
вместо этого.
Ответ 2
Что делать, если вы попробуете
Collections.sort(eventsList, new Comparator...
Насколько я знаю, ArrayList
не имеет метода sort
.
Ответ 3
В списке нет собственного метода сортировки, вам нужно позвонить
Collections.sort()
как метод в списке. Если это возвращает ClassCastError, это означает, что список имеет не сортируемые элементы. Я думаю, что это должно исправить это, но без полного кода это трудно проверить.
Ответ 4
Затем был добавлен метод ArrayList.sort(), почему он не работает. Мы можем обновить версию java (1.8) или использовать метод ниже.
Collections.sort(eventList, new Comparator<Event>() {
@Override
public int compare(Event event, Event t1) {
return event.getEventStartDate().compareTo(t1.getEventStartDate());
}
});
Ответ 5
ZXing?
Если вы получили эту ошибку в базовой библиотеке Zxing в com.google.zxing.qrcode.detector.FinderPatternFinder.selectBestPatterns
, вы можете исправить ее, понизив Zxing до 3.3.x(3.3.3 в настоящее время).
Смотрите https://github.com/zxing/zxing/issues/1170 для деталей.