1. ホーム
  2. Java

Collections.sortがdoubleでソートできない問題を完璧に解決する。

2022-02-09 12:56:34

Collections.sort(ag.state_list,new Comparator<State>(){ public int compare(State sta1, State sta2) { return sta1.score.compareTo(sta2. score);}. });

上記のコードは、ag.state_list (state_list は List で、オブジェクト State を格納します) をソートするもので、ソートの基準は State のプロパティ score (double として定義) です。しかし sta1.score.compareTo(sta2.score); の下に赤い波線がありますが、これは error: cannot invoke compareTo(double) on the primitive type double を示しています。

解決策: compareTo は Comparable を実装したオブジェクト型でのみ機能します。

最初の修正

 Collections.sort(ag.state_list,new Comparator<State>(){ public int compare(State sta1, State sta2) { return  new Double(sta1.score).compareTo(new Double(sta2.score));}. });

2つ目の解答は:double score; // scoreの定義

                  変更後:double score; // スコアを double にする ラッパークラス Double 型