2012-10-29 14 views
8

Próbuję użyć Collections.sort na ArrayList niestandardowych obiektów, ale ja dostaję ostrzeżenie i nie mogę zrozumieć, dlaczegoostrzeżenie Java z realizacją Porównywalne

Warning: Type safety: Unchecked invocation 
sort(ArrayList<CharProfile>) of the generic method sort(List<T>) 
of type Collections 

Z tym kodem:

ArrayList<CharProfile> charOccurrences = new ArrayList<CharProfile>(); 

... 

Collections.sort(charOccurrences); 

A oto moja metoda:

public class CharProfile implements Comparable { 

... 

@Override 
public int compareTo(Object o) { 

     if (this.probability == ((CharProfile)o).getProbability()) { 
      return 0; 
     } 
     else if (this.probability > ((CharProfile)o).getProbability()) { 
      return 1; 
     } 
     else { 
      return -1; 
     } 
} 
} 
+0

Co to jest „inny” robi na początku „CompareTo()” metody? –

Odpowiedz

21

Porównywalne należy zaimplementować z typem, tutaj Typ to <CharProfile>.

public class CharProfile implements Comparable<CharProfile>{ 
     @Override 
     public int compareTo(CharProfile cp) { 
     ... 
     } 
} 
1

używasz rodzajowych, więc upewnij typ przejechania z metodą CharProfile zamiast Object.

Polecam również przestawienie porównań, jak pokazano, w przypadku, gdy prawdopodobieństwo jest podwójne.

@Override 
public int compareTo(CharProfile o) { 

     if (this.probability < o.getProbability()) { 
      return -1; 
     } 
     else if (this.probability > o.getProbability()) { 
      return 1; 
     } 
     else { 
      return 0; 
     } 
} 
-2

zauważył, że już odpowiedział, ale tutaj jest mój wkład w każdym razie :)

import java.util.ArrayList; 
import java.util.List; 
import java.util.Collections; 

public class CharProfile implements Comparable <CharProfile>{ 
    public void doStuff(){ 
    List<CharProfile> charOccurrences = new ArrayList<CharProfile>(); 
    Collections.sort(charOccurrences); 
    } 
    @Override 
    public int compareTo(CharProfile o) { 
    return -1; 
    } 
} 
+0

to skompilowana funkcja compareTo()? – divine

Powiązane problemy