Подтвердить что ты не робот

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)
4b9b3361

Ответ 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 для деталей.