IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Problème Collections binarySearch


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 93
    Par défaut Problème Collections binarySearch
    Bonsoir, j'ai un problème avec ce code, il m'affiche une erreur
    je veux supprimer "C" par leur indice

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method binarySearch(List<? extends Comparable<? super T>>, T) in the type Collections is not applicable for the arguments (List<String>, test)
    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
    23
    24
    25
    26
    27
    28
    29
     
    import java.util.*;
     
    public class test{
     
    	public test() {}
     
    	public test(String a) {}
     
    	void t() {
    		List<String> etd = new ArrayList<String>();
    		etd.add(new String("A"));
    		etd.add(new String("C"));
    		etd.add(new String("B"));
    		Collections.sort(etd);
    		for (String m : etd) 
    			System.out.println(m);
     
    		int indice = Collections.binarySearch(etd, new test("C"));
    		etd.remove(indice);
    		for (String m : etd) 
    			System.out.println(m);
    	}
     
    	public static void main(String[] args) {
    		new test().t();
    	}
     
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 93
    Par défaut
    J'ai résoudre le problème, juste je changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indice = Collections.binarySearch(etd, new String("C"));
    mais j'ai un autre problème

    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
    package prb;
    import java.util.*;
    class Monstre{
     	private String nom;
    	private int vieM;
      	private int forceM;
     
    	@Override
    	String toString() {return "Nom de monster: "+ nom +" \tVie = " + vieM + "\tForce = " + forceM;}
    	Monstre() {}
    	Monstre(String nom) {
                    this.nom=nom;
    		vieM = 40 + (int) (Math.random() * 20);
    		forceM = 20 + (int) (Math.random() * 20);
    	}
    	int getVieM() {return vieM;}
    	int getForceM() {return forceM;}
    	String getNom() {return nom;}
    	void setNom(String nom) {this.nom = nom;}
    }

    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
    import java.util.*;
    class Main implements Comparable<Monstre>{
    	Monstre x = new Monstre();
           @Override
    	public int compareTo(Monstre o) {return x.getNom().compareTo(o.getNom());}
    	void t(){
    		List<Monstre> m = new ArrayList<Monstre>();
    		m.add(new Monstre("M1"));
    		m.add(new Monstre("M2"));
    		m.add(new Monstre("M3"));
    		m.add(new Monstre("M4"));
    		int indice = Collections.binarySearch(m, new Monstre("M1"));
    		m.remove(indice);
    		for (Monstre a : m) System.out.println(a);
    	}
    }

    erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method binarySearch(List<? extends Comparable<? super T>>, T) in the type Collections is not applicable for the arguments (List<Monstre>, Monstre)

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Citation Envoyé par Aymenkn Voir le message
    J'ai résoudre le problème, juste je changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indice = Collections.binarySearch(etd, new String("C"));
    ... ou juste Collections.binarySearch(etd, "C") . new String(String) n'a jamais été très pertinent.

    Citation Envoyé par Aymenkn Voir le message
    mais j'ai un autre problème
    Est-ce que c'est la classe Monstre qui implémente Comparable<Monstre> ?
    Parce que la méthode dit bien qu'elle prend un List<? extends Comparable<? super Monstre>> donc il va bien falloir que List<Monstre> corresponde à ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Et n'oublie pas que binaySearch fait une recherche sur une liste triée! Je dis ça parce que, dans ton premier exemple, la liste de String n'est pas triée.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 93
    Par défaut
    est ce que obligatoire la liste doit être triée pour faire la recherche ? car dans ce exemple j'ai pas faire la trie de liste et binaySearch fonctionne correctement .

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Et n'oublie pas que binaySearch fait une recherche sur une liste triée! Je dis ça parce que, dans ton premier exemple, la liste de String n'est pas triée.
    On voit bien un appel correct à Collections.sort() avant de faire la recherche.

    Citation Envoyé par Aymenkn Voir le message
    est ce que obligatoire la liste doit être triée pour faire la recherche ? car dans ce exemple j'ai pas faire la trie de liste et binaySearch fonctionne correctement .
    C'est indispensable. Il peut arriver qu'on tombe sur le bon résultat quand la liste n'a pas été triée, mais ce n'est qu'un hasard. L'algorithme part du principe que la liste a été triée, si ce n'est pas le cas il n'essaie pas de corriger.

    De toute façon, d'après la méthode compareTo() de ta classe Monstre, les monstres sont classés par ordre de noms.
    Or, en les insérant dans l'ordre, "M1", "M2", "M3" et "M4", ils sont bel et bien classés dans l'ordre de leur nom.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Collection de String
    Par Contrec dans le forum Général VBA
    Réponses: 2
    Dernier message: 26/01/2009, 17h33
  2. problème collection combobox
    Par sly60 dans le forum C#
    Réponses: 3
    Dernier message: 10/04/2008, 15h57
  3. NetBeans Eclipse Collections.binarySearch
    Par henriDes dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2006, 16h02
  4. Probléme collection d'objets
    Par Contrec dans le forum MFC
    Réponses: 1
    Dernier message: 14/04/2005, 10h08
  5. problème collection TABLE
    Par venusiafalls dans le forum SQL
    Réponses: 6
    Dernier message: 28/04/2004, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo