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 :

[ArrayList] indexOf()


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Points : 143
    Points
    143
    Par défaut [ArrayList] indexOf()
    bonjour,
    j'ai une instance de ArrayList qui contient des instances de MaClasse
    MaClasse possède un attribut de type String que l'on appelera maString
    ce que je voudrais faire c'est savoir si mon arrayList possède une instance de MaClasse ayant un attribut maString de valeur "maValeur"

    je dois donc utiliser la méthode indexOf() mais je vois pas comment faire..

    quelqu'un pourrait m'aider ?

  2. #2
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 71
    Points : 116
    Points
    116
    Par défaut
    concrêtement tu as quelque chose comme ça:
    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
    class MaClasse{
     
    	private String maString = null;
     
    	MaClasse() {
    	}
     
    	public String getMaString() {
    		return maString;
    	}
     
    	public void setMaString(String s) {
    		maString = s;
    	}
     
    }
    Pour savoir ça... il suffit de parcourir ton ArrayList de la sorte:
    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
     
    public boolean containsAttribut(ArrayList list, String mavaleur) {
    	int i = 0;
    	MaClasse mc = null;
    	String s = null;
    	for (i=0; i<list.size(); i++) {
    		mc = (MaClasse)list.get(i);
    		s = mc.getMaString();
    		// ici tu ne gères que l'égalité exacte des deux String
    		if (mavaleur.equals(s)) {
    			return true;
    		}
    		// ici on gère la contenance
    		// on sort de la boucle et de la méthode à la
    		// première occurence trouvée
    		// sinon il faut construire un tableau et le
    		// renvoyer
    /*
    		if (s!=null) {
    			if (s.indexOf(mavaleur) >=0) {
    				return true;
    			} 
    		}
    */
    	}
    	// si on a poarcouru le tableau et rien trouvé alors il n'y a pas de valeur
    	return false;
    }
    après c'est à toi de gérer le fait que mavaleur puisse être nulle.
    Ici je considère que mavaleur ne peut pas être nulle, mais l'attribut maString si.

  3. #3
    Membre habitué Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Points : 143
    Points
    143
    Par défaut
    oui je ferais bien comme ça, seulement je pensais qu'il y avait moyen d'aller plus vite en utilisant indexOf()

  4. #4
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 71
    Points : 116
    Points
    116
    Par défaut
    Dans ce cas tu es obligé de créer un objet tel que tu veux...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public containsValue(ArrayList list, String maValeur) {
    	MaClasse mc = new MaClasse();
    	mc.setMaString(mavaleur);
    	return (list.indexOf(mc)>=0);
    }
    Tton MaClasse contenu doit être entièrement identique à celui créé.
    Ca ne fonctionne pas pour un attribut de classe.
    Car tu n'as plus une recherche exacte d'objet mais une recherche par sous-structure ou similarité.
    indexOf ne gère que la recherche exacte.
    Si tu veux une recherche par similarité (égalité d'un ou plusieurs attributs mais pas de l'objet entier) il te faut implémenter l'algorithme toi-même.

  5. #5
    Membre habitué Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Points : 143
    Points
    143
    Par défaut
    merci bcp !

  6. #6
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 71
    Points : 116
    Points
    116
    Par défaut
    Je t'en prie...

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

Discussions similaires

  1. [DEbutant] Utilisation Arraylist (indexof)
    Par MrAlex dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/06/2010, 11h09
  2. ArrayList - indexOf
    Par barriton1 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 15/04/2010, 08h46
  3. ArrayList IndexOF et lastIndexOf
    Par ouadie99 dans le forum C#
    Réponses: 4
    Dernier message: 27/03/2008, 17h33
  4. arraylist et indexof
    Par mauroyb0 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/03/2007, 14h56
  5. [vb.net]indexof d'un objet dans un arraylist
    Par Golzinne dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/10/2006, 21h09

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