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 :

probleme avec une linkedlist


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut probleme avec une linkedlist
    bonjour à vous.
    je travaille avec les linkedlist, et je crois savoir exactement comment ça marche.
    malheureusement,depuis ce matin, je bloque sur un code, et je ne sais plus quoi faire:
    j'ai 3 listes chainees.
    j'ecris une fonction qui me renvoie une liste contenant les elements des 3 listes chainées.
    puis, je parcours ma lall qui est la liste qui contient tous les elements, et chaque fois, je veux savoir dans quelle liste parmis les 3 initiales se trouve mon element.
    et bizzarement, il ne se trouve dans aucune des 3 listes.
    voila mes bouts de code, au cas ou?

    celui çi renvoie la liste totale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static LinkedList getListRellisteAll(Instance ins,Entity en,Schema schema, int appId , InstApplication ecco) throws EccoException{
    		LinkedList l = new LinkedList();
    		LinkedList l1 = getListRellisteExp(ins, en, schema, appId, ecco);
    		LinkedList l2 = getListRellisteder(ins, en, schema, appId, ecco);
    		LinkedList l3 = getListRellisteinv(ins, en, schema, appId, ecco);
     
    		l.addAll(l1);
    		l.addAll(l2);
    		l.addAll(l3);
    		return l;
    	}
    cette ligne fait le parcours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i=0;i<lall.size();i++){
    			Object ob1 = lall.get(i);
    et celles ci testent.
    test qui ne renvoie rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(lexp.contains(ob1)) cells[j+1] = CelluleEdge((Macellule)cells[0],(Macellule)cells[j],Color.BLACK);
     
    		if(lder.contains(ob1)) cells[j+1] = CelluleEdge((Macellule)cells[0],(Macellule)cells[j],Color.BLUE);
     
    		if(linv.contains(ob1)) cells[j+1] = CelluleEdge((Macellule)cells[0],(Macellule)cells[j],Color.GREEN);
    merci d'avance

  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,


    Quel est le type des objets contenu dans les LinkedList ? Implémentent-ils bien la méthode equals() ?


    Sinon fait attention car tu fais des parcours via index sur des LinkedList ce qui peut être très pénalisant... peut-être devrais-tu utiliser des ArrayList ???

    a++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    bonjour.
    je suis malheureusement trés avancé dans mon projet pour changer les linkedlist.
    sauf si je n'ai pas le choix.
    en realite, je manipule des defaultgraphcell.
    ma classe Macellule n'est qu'une extension des defaultgraphcell.
    mais, j'ai bien utilisé contains, pas egal.
    et dans d'autres packages, je n'ai pas eu de problemes.

  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
    Citation Envoyé par christianf Voir le message
    mais, j'ai bien utilisé contains, pas egal.
    La méthode contains() des collections utilise la méthode equals() des objets qu'elle contient...

    a++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    ok.
    je dois donc en principe chercher une autre facon de verifier si une de mes cellules est bien dans la liste.
    j'ai mon idée là dessus.
    ma cellule ayant une oid unique de type string, je vais faire un test sur mes oid.
    je t'en dirais.
    merci de m'avoir orienté.

  6. #6
    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
    Citation Envoyé par christianf Voir le message
    je dois donc en principe chercher une autre facon de verifier si une de mes cellules est bien dans la liste.
    Non : tu dois juste implémenter equals() (et hashCode() par la même occasion, voir la FAQ...)

    a++

  7. #7
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par christianf Voir le message
    je suis malheureusement trés avancé dans mon projet pour changer les linkedlist.
    Petite apartée: c'est pour cette raison qu'il est recommandé de déclarer ses objets comme étant des "List" dès que cela est possible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List uneListe = new ArrayList();
    Comme cela, tu utilises les méthodes de l'interface et tu peux de manière complètement transparente changer l'implémentation qui est cachée sous l'interface!
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  8. #8
    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
    Citation Envoyé par CyberChouan Voir le message
    Petite apartée: c'est pour cette raison qu'il est recommandé de déclarer ses objets comme étant des "List" dès que cela est possible.
    +1

    Et en particulier pour les paramètres de méthodes ou les type de retour... afin de ne pas s'enfermer dans un choix d'implémentation !

    [edit]
    Mais si tu continues à utiliser des LinkedList, évites surtout les codes du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0;i<lall.size();i++){
    	Object ob1 = lall.get(i);
    	...
    Et préfère l'utilisation de l'iterator :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Iterator it = lall.iterator();
    while (it.hasNext()) {
    	Object obj = it.next();
    	...
    D'ailleurs ce devrait être le cas tout le temps sauf pour les List qui implémente l'interface RandomAccess...


    a++

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    il est possible de changer mes linkedlist en arraylist.
    mais, je ne pense pas que ça resoudra mon probleme d'egalite.
    de plus, j'ai deja essayé une fois d'implementer la methode equals() en utilisant la faq.
    l'exemple de comparaison de voiture est facile, si l'on s'en tient au fait que (comme dans l'exemple), on peut se fier au nombre de chevaux d'une voiture(qui est un int) pour comparer les elemnts de type voiture.
    j'utilise une structure qui ne retourne aucun int.
    du coup, je ne peux pas implementer moi meme une methode equals();
    une liste d'entite par exemple, est une liste d'entité.
    comment vas tu les comparer?
    tout ce que je veux, c'est voir si une entite est dans une liste.

  10. #10
    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
    Citation Envoyé par christianf Voir le message
    il est possible de changer mes linkedlist en arraylist.
    mais, je ne pense pas que ça resoudra mon probleme d'egalite.
    Non... mais des accès par index sur une LinkedList sont très pénalisant du point de vue des performances. Si ta LinkedList contient un certain nombre d'élément cela peut vite se ressentir...


    Citation Envoyé par christianf Voir le message
    du coup, je ne peux pas implementer moi meme une methode equals();
    une liste d'entite par exemple, est une liste d'entité.
    comment vas tu les comparer?
    tout ce que je veux, c'est voir si une entite est dans une liste.
    Pour voir si une identité est dans une liste tu es obligé de comparer l'égalité entre deux identités...

    Sinon explique comment tu veux pouvoir faire cela ???

    a++

Discussions similaires

  1. PROBLEME AVEC UNE TABLE INTERBASE
    Par barro dans le forum InterBase
    Réponses: 1
    Dernier message: 22/09/2004, 08h16
  2. [C#] [Oracle] Probleme avec une procedure stockée
    Par sronin1 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/05/2004, 19h04
  3. Probleme avec une table vide
    Par king dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/03/2004, 14h24
  4. au secour probleme avec une requete...
    Par soufiane59 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/09/2003, 10h28
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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