ArrayListを降順にソートしたい
発生している問題・エラーメッセージ
ランダムに生成された、10個の数をListに格納し表示するコードを書いています。
MyDataクラスでデータの生成番号と値を格納後、Prog4Lec04Sub2MainクラスでListに格納し、
sort機能で降順に並び替えを実施後、Printしたいのですが、以下のエラーが発生します。
sort機能で並べ替えを実施する場合、何らかの型にキャストしなければならないのでしょうか。
初歩的な質問で恐縮ですが、よろしくお願いします。
Exception in thread "main" java.lang.ClassCastException: MyData cannot be cast to java.lang.Comparable at java.util.Collections$ReverseComparator.compare(Collections.java:5108) at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) at java.util.TimSort.sort(TimSort.java:220) at java.util.Arrays.sort(Arrays.java:1512) at java.util.ArrayList.sort(ArrayList.java:1462) at java.util.Collections.sort(Collections.java:175) at Prog4Lec04Sub2Main.main(Prog4Lec04Sub2Main.java:16)
###Prog4Lec04Sub2Main
java
1import java.util.ArrayList; 2import java.util.Collections; 3import java.util.List; 4 5public class Prog4Lec04Sub2Main { 6 7 public static void main(String[] args) { 8 9 List<MyData> list = new ArrayList<>(); 10 11 for(int i=0; i<10; i++) { 12 MyData d = new MyData(i, Math.random()); 13 list.add(d); 14 } 15 16 Collections.sort(list, Collections.reverseOrder()); 17 18 for(int i=0; i<10; i++) { 19 System.out.println(list.get(i)); 20 } 21 } 22}
###MyData
java
1public class MyData { 2 public int index; 3 public double data; 4 5 MyData(int index, double data){ 6 this.index = index; 7 this.data = data; 8 } 9 10 public String toString() { 11 return "[" + index + "] = " + data; 12 } 13}
試したこと
Prog4Lec04Sub2Mainにて、Collections.sort(list, Collections.reverseOrder());を試しましがが、
上記の通り、エラーが発生しました。
実行結果として、以下のような実行結果を得たいです:
[9]=0.8395040403659793
[8]=0.8189062091743063
[7]=0.6705154302473527
[6]=0.8107981435059656
[5]=0.7808639306636846
[4]=0.4486541177871155
[3]=0.46994453864506025
[2]=0.6628052688710216
[1]=0.20142499070903008
[0]=0.5939917583832581
回答3件
あなたの回答
tips
プレビュー