完美解決Collections.sort對double不能排序問題
阿新 • • 發佈:2019-02-10
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);的下面就會出現紅色波浪線,顯示錯誤: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));}});
第二種解決方法是:double score;//對score的定義
修改為:Double score; //score改為double的包裝類Double型別