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
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 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
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);
	}
}
et maintenant ce que j'aimerai faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
for(Quartier q: Liste_adj l){
         System.out.println(q);
}
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
 
System.out.println(liste_adj l);
Merci d'avance pour votre aide,

Cordialement,
Toontun,
Noob en Java :)