Itération sur une collection contenant un int et une collection<Integer>
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:
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:
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:
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:
1 2
|
System.out.println(liste_adj l); |
Merci d'avance pour votre aide,
Cordialement,
Toontun,
Noob en Java :)