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

Java Discussion :

Bouclage/test d'objets sur la même liste


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut Bouclage/test d'objets sur la même liste
    Bonjour

    Je vous explique mon problème:

    J'ai une liste d'Objet et je voudrais comparer ces objets entre eux (sans se tester soi même sinon ça fausse le resultat)
    J'avais cette solution en premier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Iterator<Noeud>it2  = l.iterator();
    		Noeud n1 = it2.next();
     
    		while(it2.hasNext()){
    			Noeud n2 = it2.next();
     
    			if(testColapseII(n1, n2)){
    				return false;
    			}
     
    			n1 = n2;
    		}
     
    		return true;
    Mais son grand défaut c'est qu'après n1 = n2 le nouvel Objet n1 ne teste pas les éléments passés

    j'ai donc essayé de corriger le problème et j'ai un nouvel algo celui là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	for(int i=0;i<l.size();i++){
    			Noeud n1 = l.get(i);
    			for(int j=0;j<l.size();i++){
    				Noeud n2 = l.get(j);
    				if(testColapseII(n1,n2) && j!=i){
    					return false;
    				}
    			}
    		}
              return true
    J'aimerais avoir un avis sur cet algo (si il est correct déjà car j'ai pas le résultat final souhaité avec)

    Merci à tous

  2. #2
    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
    a priori c'est le bon algorithme. T'as juste mis un i++ dans la deuxième boucle alors qu'il faut un j++ A noter que tu peux l'accélérer. Dans ton alog actuel tu teste (1,5) et aussi (5,1), ce qui prend donc deux fois plus de temps que juste tester une combinaison:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	for(int i=0;i<l.size()-1;i++){
    			Noeud n1 = l.get(i);
    			for(int j=i+1;j<l.size();j++){
    				Noeud n2 = l.get(j);
    				if(testColapseII(n1,n2) ){
    					return false;
    				}
    			}
    		}
              return true

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Par défaut
    Juste un petit conseil de passage
    Pour les boucles, perso, j'évite d'utliser les iterateurs, et c un peu loud de se balader par indice, je prefere faire autrement, ca me parait plus intuitif, même à la lecture;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //Par exemple
    List<Noeud>noeudsList  = new ArrayList();
     
    for(Noeud noeud : noeudsList){
    /*Ca se lit meme en francais:
     pour chaque Noeud, que je stocke dans la variable neoud,
    présent dans la liste noeudsList, je fais ce qui suis...*/
    //...
    }
    Par contre comme ca, je ne vois pas comment inclure l'amélioration de l'algo de tchize_ (que je trouve interessante)

  4. #4
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Merci de vos réponse
    en effet j'ai mis un "i" au lieu d'un "j" (shame on me )

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

Discussions similaires

  1. Synchroniser JTree+JTables Models sur une même List
    Par iGwendal dans le forum Composants
    Réponses: 2
    Dernier message: 15/01/2010, 10h31
  2. [XL-2003] Plusieurs Combobox sur 1 même liste à rafraîchir
    Par MarcelG dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 05/08/2009, 09h25
  3. Rotation d'un objet sur lui-même
    Par Ninouw dans le forum OpenGL
    Réponses: 6
    Dernier message: 29/12/2006, 09h40
  4. Réponses: 4
    Dernier message: 03/09/2005, 11h30
  5. Même liste sur 26 pages différentes
    Par krfa1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/03/2005, 11h32

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