1. 程式人生 > >完美解決Collections.sort對double不能排序問題

完美解決Collections.sort對double不能排序問題

 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型別