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] rechercher un élément X


Sujet :

Collection et Stream Java

  1. #1
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut [ArrayList] rechercher un élément X
    Bonjour,

    je travaille sur une petite appli java dont les données sont stockées dans un fichier XML. Ces données sont parsées au chargement du programme et stockées dans des arrayList. Mon problème est que je dois rechercher un élément d'ID X dans ma liste. Or les ID ne correspondent pas à la position de l'item dans la liste (donc pas de get(id)).

    comment dois-je, selon vous, procéder ?

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Utilises une Map à la place de ta List...

    a++

  3. #3
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    aucune autre solution envisageable ? a part le fait de boucler pour chercher l'identifiant

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Qu'est-ce qui te dérange dans le fait d'utiliser une Map ???

    a++

  5. #5
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Par défaut
    Citation Envoyé par Valus25 Voir le message
    aucune autre solution envisageable ? a part le fait de boucler pour chercher l'identifiant
    Ben, c'est pas une bonne idée d'utiliser une map ? tu associes ainsi une clé (ton id) à une valeur (ta donnée).

    et après tu fais un appel à la fonction get () ou tu passe ta clé en paramètre...

  6. #6
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    bah le problème c'est que j'ai un peu la flemme de recoder toute la partie acquisition et utilisation des données.

  7. #7
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Par défaut
    D'où l'importance de pas se lancer illico dans le code

  8. #8
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    Je suis arrivé en stage y'a deux semaines et on m'impose un délai de trois ... aïe

    les nuits sont courtes ...

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    * Solution idéale (niveau perfs) : utiliser des Map.

    * Solution vite fait : boucler, comme tu l'envisageais, ça se fait souvent et beaucoup de librairies utilitaires font de même.

    * Solution assez vite fait, et plus propre et esthétique (mais probablement similaire niveau perfs) : tu utilises le méthode indexOf de List. Exemple pour JDK 1.4, pas (forcément) besoin du cast à partir du JDK 5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TaClasse monObjet = (TaClasse)maListe.get(maListe.indexOf(objetRecherhe));
    Mais ce n'est pas la fête, à moins que tu ne recherches le même objet (donc la même référence, ce qui n'a absolument aucun intérêt), il faut que tu définisses une méthode equals() pour le type d'objet recherché. Comme ça le JDK saura ce que tu entends par "objets égaux". Exemple, si tes ID sont des types primitifs comme int ou long (dans le cas contraire n'oublie pas de gérer le cas des valeurs nulles) :

    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
    public class TaClasse {
     
    	private int id = 0;
     
    	[...]
     
    	public int getId() {
    		return id;
    	}
     
    	public boolean equals(Object obj) {
    		if (obj instanceof TaClasse) {
    			TaClasse tonObj = (TaClasse)obj;
    			return (tonObj.getId() == this.getId()); 
    		}
     
    		return false;
    	}
    }

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Par défaut
    Essayer de voir cette exemple, et utiliser la même méthode pour chercher ID.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    java.util.Hashtable<String,String> hash = new java.util.Hashtable<String,String>();	
    			 hash.put("login",login);	
    			 hash.put("pw",password);
    			 List <User> user = userService.read(hash);
    			 if((user.size()== 1)&&
    					 (user.get(0).getPw().equals(password))){
    			 return 0;
    			 }
    Bon courage

  11. #11
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    merci à tous pour vos exemples de codes mais je vais utiliser des maps du coup

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/05/2007, 10h55
  2. [DOM] Recherche d'éléments
    Par ploxien dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 03/05/2007, 11h35
  3. Recherche d'éléments manquants
    Par flash_math dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/01/2007, 11h34
  4. [SET]Recherche d'éléments communs à 2 sets
    Par CappCorp dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 03/01/2005, 17h03
  5. [JDOM] Recherche d'éléments en JDOM
    Par newfsch dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/04/2004, 18h33

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