Bonjour à tous,
Je désire faire un graphe à partir d'une liste d'adjacence. Je m'entraine un peu sur l'implémentation de graphes, je débute en JAVA. Je m'excuse d'avance si mon code fait mal aux yeux et suis ouvert à toutes critiques constructives :) !
Le problème est le suivant:
-j'ai une classe Quartier, qui a comme attributs un int (numéro du nœuds, nommé président) et une collection d'entiers(nommée voisins).
-je créé ma liste dans une classe Liste_adj qui est une collection de Quartiers. Je la construit à partir d'une matrice d'adjacence, oui je sais ce n'est pas malin mais j'ai envie de le faire... Donc le numéro de ma ligne de ma matrice correspond au président, et à chaque fois que sur cette ligne il y a un 1 cela veut dire que l'individu j (j ième) est un voisin.
-Quand je fais une boucle sur ma liste cela me renvoie que JAVA ne peut pas itérer sur ma liste.
Voici mon code:
-La classe Quartier
et voici la classe Liste_adj:
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 import java.util.HashSet; import java.util.Set; public class Quartier { private int president; private Set<Integer> voisins= new HashSet<Integer>(); public Quartier(int p, Set<Integer> v) { president=p; voisins=v; } public String toString() { return("Ville: "+president+" a comme voisins: "+voisins); } }
et maintenant ce que j'aimerai faire:
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 import java.util.HashSet; import java.util.Set; public class Liste_adj { Set<Quartier> liste= new HashSet<Quartier>(); Liste_adj(Matrice m){ for(int i=0; i<m.tab.length; i++) { Set<Integer> v=new HashSet<Integer>(); for(int j=0; j<m.tab.length; j++){ if(m.tab[i][j]==1) { v.add(j); } } //System.out.println("p= "+i+" v: "+v); Quartier q=new Quartier(i, v); liste.add(q); } } public String toString() { return(""+liste); } }
même si je sais que faire ça avec le toString de Quartier suffit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for(Quartier q: Liste_adj l){ System.out.println(q); }
Merci d'avance pour votre aide,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.out.println(liste_adj l);
Cordialement,
Toontun,
Noob en Java :)
Partager