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 :

[Collections]Tableaux d'objets uniques.


Sujet :

Collection et Stream Java

  1. #1
    Invité
    Invité(e)
    Par défaut [Collections]Tableaux d'objets uniques.
    Bonjour,

    Depuis une JList avec sélection multiple, je récupère un tableau d'objets.

    J'aurais besoin d'ajouter le contenu de ca tableau dans un autre en étant sur que l'objet n'y est pas déja afin de ne pas avoir de doublons.

    J'ai vu que l'Interface Map ne pouvait pas contenir deux même clefs.
    Mais comment convertir mon Object[] en une des Implémentations de Map et quelle implémentation choisir.

    note : j'aurais juste besoin de parcourir cette map et d'ajouter les objets qu'elle conteint dans une autre JList

    Merci

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Tu n'as pas besoin d'utiliser une Map pour ça, voici un exemple avec une List :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Object[] objectsFromJlist;
    List<Object> list = new ArrayList<Object>();
    for(Object o : objectsFromJlist) {
        if(!list.contains(o)) {
            list.add(o);
        }
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par le y@m's
    Tu n'as pas besoin d'utiliser une Map pour ça, voici un exemple avec une List :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Object[] objectsFromJlist;
    List<Object> list = new ArrayList<Object>();
    for(Object o : objectsFromJlist) {
        if(!list.contains(o)) {
            list.add(o);
        }
    }
    Certes l'exemple est correct mais c'est Tiger donc java 1.5 !!!

    Alors la question pour Blaise1 dois-tu faire ça avec java 1.5 ?

  4. #4
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Si il ne travaille pas avec la 1.5, il a juste a enlever les:
    Le code restera bon quand meme.
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par Scorpyosis
    Si il ne travaille pas avec la 1.5, il a juste a enlever les:
    Le code restera bon quand meme.
    Non non, il faut aussi modifier la boucle

  6. #6
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Ceci dit mettre:

    List<Object> list = new ArrayList<Object>();
    ne sert strictement à rien puisque par défaut c'est des objets de type Object dans une List...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je ne suis pas en Java 1.5

    ------------------------------------

    J'ai fait cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void fill(Object[] objets){
    		for(int i=0; i<objets.length;i++){
    			if(!model.contains(objets[i])){
    				model.addElement(objets[i]);
    			}
    		}
    	}
    Et ça fonctionne mais si je retourne dans ma premiere liste, que je sélectionne un autre élement, que je l'ajoute et ensuite reajoute le premier element il s'ajoute..

    Je m'explique :

    En réalité j'ai 4 listes qui se remplissent en cascade:
    Le première ajoute des objets dans la seconde etc..
    Lorsque j'ai des objets dans me 4eme liste, je peux les sélectionner et les ajouter à ma 5eme liste.
    Le 5eme liste ne peux pas contenir plusieurs fois le même objet (d'ou mon problème).

    Donc, je remplis mes listes jusqu'a la 4 eme, j'ajoute objet1 et il ne s'ajoute qu'une seule fois.
    Ensuite je retourne dans ma premiere liste et recommence la descente. Lorsque j'ai à nouveau objet1 dans ma 4eme et que je l'ajoute.. il s'ajoute (alors qu'il y est déja)

    Evidemment mes objets sont crées lors du remplissage de la liste. Donc Objet1 la première fois n'est plus tout à fait le même. (il comporte les mêmes attributs mais c'est un autre instance) est-ce à cause de cela ?

  8. #8
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par thibaut
    Ceci dit mettre:

    List<Object> list = new ArrayList<Object>();
    ne sert strictement à rien puisque par défaut c'est des objets de type Object dans une List...
    C'est vrai mais je trouve que c'est plus propre :p
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  9. #9
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Tu peux faire aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<? extends Object> list = new ArrayList<? extends Object>();
    si tu veux !!!

  10. #10
    Invité
    Invité(e)
    Par défaut
    List<Object> list = new ArrayList<Object>();
    Mais je ne suis pas en 1.5 de toutes façons. ;-)

  11. #11
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Er... pourquoi vous vous compliquez la vie ? Il suffit d'utiliser un Set, comme le HashSet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set aucunDoublon = new HashSet();
    // ... recupere le tableau d'Object[] items
    aucunDoublon.addAll(Arrays.asList(items));
    Romain Guy
    Android - Mon livre - Mon blog

  12. #12
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Non non, il faut aussi modifier la boucle Razz
    Je vois pas pourquoi ? peux tu m'expliquer il y a surement une subtilité que j'ai pas du voir.

    Pour le <Object> je trouve ca plus propre aussi.
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Gfx
    Er... pourquoi vous vous compliquez la vie ? Il suffit d'utiliser un Set, comme le HashSet.
    Ca ne fonctionne pas non plus. Une fois que j'ai rechargé toutes mes listes, il rajoute l'objet même s'il est déja dedans

  14. #14
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Alors le probleme est ailleurs parce que je peux te garantir qu'un Set fonctionne
    Romain Guy
    Android - Mon livre - Mon blog

  15. #15
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Moi je pencherai plutot pour un probleme au niveau de tes List. Tu ne dois pas le vider avant de les re remplir, d'ou les doublons.
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  16. #16
    Invité
    Invité(e)
    Par défaut
    Oui le set fonctionne.. Je vais regarder un peu plus loin.. mais le set se base sur quoi pour savoir si un objet eest déja dedans ou pas ?

  17. #17
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    C'est marque dans la documentation. En l'occurence sur les hashcodes des objets.
    Romain Guy
    Android - Mon livre - Mon blog

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Scorpyosis
    Moi je pencherai plutot pour un probleme au niveau de tes List. Tu ne dois pas le vider avant de les re remplir, d'ou les doublons.
    Si je dois les vider. Car elles se remplissent en fonction de ce qui est sélectionné dans la liste qui les précédent.
    Si je prend ligne1 dans ma premiere liste j'aurai ligne1-1 et ligne 1-2 dans la seconde
    Si je prend ligne2 dans ma premiere liste j'auria ligne 2-1 et ligne 2-2 dans la seconde et pas ligne1-1, ligne1-2, ligne2-1 et ligne 2-2

    Je crois sérieusemeent que c'est du au fait que je recrée à chaque fois mes objets et donc qu'ils n'ont pas la même référence donc pas identiques..

  19. #19
    Invité
    Invité(e)
    Par défaut
    Voilà :
    ajout de 'Objectif de diag 1' code = 3705235
    //recréation des listes
    ajout de 'Objectif de diag 1' code = 13783459
    Je suis mal barré la...

  20. #20
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Citation Envoyé par Blaise1
    Citation Envoyé par Scorpyosis
    Moi je pencherai plutot pour un probleme au niveau de tes List. Tu ne dois pas le vider avant de les re remplir, d'ou les doublons.
    Si je dois les vider. Car elles se remplissent en fonction de ce qui est sélectionné dans la liste qui les précédent.
    Si je prend ligne1 dans ma premiere liste j'aurai ligne1-1 et ligne 1-2 dans la seconde
    Si je prend ligne2 dans ma premiere liste j'auria ligne 2-1 et ligne 2-2 dans la seconde et pas ligne1-1, ligne1-2, ligne2-1 et ligne 2-2

    Je crois sérieusemeent que c'est du au fait que je recrée à chaque fois mes objets et donc qu'ils n'ont pas la même référence donc pas identiques..
    Quiproquo, en fait je pensais que tu ne les vidais pas en ecrivant cette phrase, mais tu les vides bien donc ca vient pas de là !
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/01/2011, 14h55
  2. Réponses: 5
    Dernier message: 05/11/2010, 17h39
  3. [Collections]Tableaux associatifs
    Par sheura dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 18/12/2005, 14h10
  4. Réponses: 3
    Dernier message: 24/10/2005, 10h07
  5. delete[] seulement pour des tableaux d'objets?
    Par Crisanar dans le forum C++
    Réponses: 7
    Dernier message: 22/10/2005, 19h50

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