2014-10-09 21 views
-1

有這個類:的Java:ArrayList中我如何才能

public class Media { 
double supporto; 
double i_m; 
String idSentence; 

public Media(double supporto,double i_m,String idSent){ 
    this.supporto=supporto; 
    this.i_m=i_m; 
    this.idSentence=idSent; 
} 


public double getSupporto(){ 
    return this.supporto; 
} 

public double getI_m(){ 
    return this.i_m; 
} 

public String getIdSentence(){ 
    return this.idSentence; 
} 

public String toString(){ 
    return this.supporto+" - "+this.i_m+" - "+this.idSentence; 
} 
} 

,並添加一個ArrayList文本這些值:

ArrayList<Media> m=new ArrayList<Media>(); 
m.add(new Media(0.2545,0.2365,"id002")); 
m.add(new Media(0.8745,0.4658,"id005")); 
m.add(new Media(0.1599,0.6580,"id0010")); 

我怎麼排序此數組中值的降序排列一流的媒體? 我想這個命令:

0.1599,0.6580,"id0010" 
0.2545,0.2365,"id002" 
0.8745,0.4658,"id005" 

編輯

我解決了這個辦法:

public class Media implements Comparable<Object>{ 
double supporto; 
double i_m; 
String idSentence; 

public Media(double supporto,double i_m,String idSent){ 
this.supporto=supporto; 
this.i_m=i_m; 
this.idSentence=idSent; 
} 
public double getSupporto(){ 
return this.supporto; 
} 
public double getI_m(){ 
return this.i_m; 
} 
public String getIdSentence(){ 
return this.idSentence; 
} 
public String toString(){ 
return this.supporto+" - "+this.i_m+" - "+this.idSentence; 
} 
@Override 
public int compareTo(Object arg0) { 
    if(this.supporto==((Media) arg0).getSupporto()) return 0; 
    else if((this.supporto)>((Media)arg0).getSupporto()) return 1; 
    else return -1; 
} 
} 

在main方法我下令將M的ArrayList:

Collections.sort(m); 
+0

向我們展示您嘗試實施分類的代碼。 – 2014-10-09 10:08:57

+0

使用Comparable或Comparator對對象進行排序 – 2014-10-09 10:08:59

+0

實現Comparable或Comparator並使用Collections.sort()方法 – DeiAndrei 2014-10-09 10:09:34

回答

0

你需要做水果比較

public class Media implements Comparable<Fruit> { 
    public int compareTo(Fruit compareFruit) { 

     int compareQuantity = ((Media) compareFruit).getSupporto(); 

     //ascending order 
     return this.supporto - compareQuantity; 

     //descending order 
     //return compareQuantity - this.supporto; 
    } 
... 
} 

Arrays.sort(m); 一些更多的信息: http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/

0

你可以用自己的比較排序呢

m.sort(new Comparator<Media>() { 

     @Override 
     public int compare(Media o1, Media o2) { 
      return Double.compare(o1.getSupporto(), o2.getSupporto()); 
     } 
    }); 

這將你喜歡的方式排序。如果您需要這在許多pleaces,我會但是建議創建靜態比較,如:

private static Comparator<Media> supportoComparator = new Comparator<Media>() { 

    @Override 
    public int compare(Media o1, Media o2) { 
     if (o1 != null && o2 != null) { 
      return Double.compare(o1.getSupporto(), o2.getSupporto()); 
     } else { 
      throw new IllegalArgumentException(); 
     } 
    } 
}; 

上面的代碼是在類媒體,然後你使用它像:

m.sort(Media.GET_SUPPORTO_COMPARATOR()); 

,並對其做