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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?

Merci d'avance