Methode BinarySearch avec un comparable
Bonjour,
Je dois essaye de comprendre le fonctionnement d'un programme. Mais quand j'essaye de le compiler, pas moyen, ça bloque a la méthode "binarysearch(list,object)" qui renvoi l'indice de l'objet dans la liste.
Les objets stockées dans la liste doivent implémenter Comparable.
Ceci:
Code:
1 2 3 4
|
private List<String> personnes = new ArrayList<String>();
..
positionIndex = java.util.Collections.binarySearch(personnes, new String("toto"); |
Marche sans problème.
(j'ai simplifier le problème, c'est peut être pas la syntaxe exact).
Mais voici ce que j'aimerais faire (j'ai simplifier...)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
class Personne implements Comparable {
private String nom;
public Personne(String nom) {
this.nom=nom;
}
public int compareTo(Object arg0) {
Personne pers = (Personne) arg0;
return this.nom.compareToIgnoreCase(pers.nom);
}
}
public class test {
static List<Personne> personnes = new ArrayList<Personne>();
public static void main() {
int i = java.util.Collections.binarySearch(personnes, new Personne("toto"));
}
} |
Hors cela ne marche pas.
Le compilateur me râle dessus avec:
test.java:34: cannot find symbol
symbol : method binarySearch(java.util.List<Personne>,Personne)
location: class java.util.Collections
int i = java.util.Collections.binarySearch(personnes, new Personne("toto"));
Visiblement, il a pas l'air de comprendre que List<Personne> est une liste qui est capable d'avoir des objets qui implémente comparable. :?
Lien javadoc
Je comprend pas très bien...
J'ai fait une erreur quelque part? :bug:
Merci d'avance ;)