JavaアプリのAndroidでArrayList
をソートしようとしていますが、この奇妙な例外が発生しています。
コード:
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)
ArrayList#sort()
はAPIレベル24で追加され、APIレベル24未満のランタイムにはそのメソッドがありません。あなたのcompileSdkVersion
は24にあるので、最初にコンパイルするコードを取得しました。
代わりにCollections.sort(list, comparator)
を使用してください。
Zxing?
com.google.zxing.qrcode.detector.FinderPatternFinder.selectBestPatterns
のZxingコアライブラリでこのエラーが発生した場合は、Zxingを3.3.x(現在は3.3.3)にダウングレードすることで解決できます。
詳細は https://github.com/zxing/zxing/issues/117 を参照してください。
あなたがしようとしたら
Collections.sort(eventsList, new Comparator...
私の知る限り、ArrayList
にはsort
メソッドがありません。
リストには独自の並べ替えメソッドがないため、呼び出す必要があります
Collections.sort()
リストのメソッドとして。これがClassCastErrorを返す場合は、リストにソートできないアイテムがあることを意味します。これで修正できると思いますが、完全なコードがないと確認するのが困難です。
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());
}
});