2014-03-06 35 views
0
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.Collections; 

public interface Comparable<T> { 

int compareTo(T other); 

} 

public class Joueur implements Comparable<Joueur> { 

private int points; 
private int idJoueur; 

public Joueur(int aIdJoueur, int aPoints) 
{ 
    points= aPoints; 
    idJoueur = aIdJoueur; 
} 

public Joueur(int aIdJoueur, int aPoints) 
{ 
    points= aPoints; 
    idJoueur = aIdJoueur; 
} 

public int getIdJoueur() 
{ 
    return idJoueur; 
} 

public int compareTo(Joueur autre) { 
    // TODO Auto-generated method stub 
    if (points < autre.points) return -1; 
    if (points > autre.points) return 1; 
    return 0; 
} 

public class CollectionJoueur { 

ArrayList<Joueur> j = new ArrayList<Joueur>(); 

public CollectionJoueur(int aIdJoueur, int aPoints) 
{ 
    Joueur ajouterJ = new Joueur(aIdJoueur, aPoints); 
    ajouter(ajouterJ); 
} 
public void ajouter(Joueur joueur) 
{ 
    j.add(joueur); 
} 

public iterateurJoueur creerIterateur() 
{ 
    Collections.sort(j); 

    Iterator<Joueur> itrJoueur = j.iterator(); 
    while(itrJoueur.hasNext()) 
    { 

    } 
} 

} 

所以這裏是我的問題,我一直在嘗試做類似的排序,但在收集排序它給了我一個通用的錯誤的錯誤。我有一個班級收藏可以讓玩家進入陣列列表,然後我必須按照升序排序。Java通用錯誤

+5

爲什麼你有自己的「Comparable」接口? –

回答

5

你應該實現java.lang.Comparable接口,而不是你自己的Comparable接口。

http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

+1

你*必須*實現'java.lang.Comparable'。 – aliteralmind

+1

@aliteralmind:必須可能是一個單詞太強,從技術上講,你可以通過提供一個比較器來避免它。 – biziclop

+0

我只是在談論什麼時候明確要求「Comparable」。在那種情況下,它總是意味着'java.lang.Comparable'版本。 – aliteralmind

1

你會發現Collections.sort(..)被定義爲

public static <T extends Comparable<? super T>> void sort(List<T> list) { 

換句話說,它需要一個類型是java.lang.Comparable子類型。你的班級不是java.lang.Comparable的子類型。你想用Collections.sort(..)做什麼是不可能的。

擺脫您的Comparable類型並使用java.lang.Comparable

或者編寫自己的排序方法。