2009-11-14 6 views
1

J'ai quelque chose comme ceci:Comment itérer une collection <Set <IConnection>>

something need here = scope.getConnections(); 

//getConnections() returns Collection<Set<IConnection>> 

je dois parcourir toutes les connexions (les trucs que les getConnections() retours)

Comment le faire?

+0

Avez-vous et IDE? La plupart d'entre eux aide à écrire la valeur du type de retour et peut également insérer le code de boucle de collecte. –

+0

:) oui, j'ai éclipse, je suis juste très nouveau à java, et eclipse – Omu

+0

Êtes-vous réinventer le pool de connexion? Je recommanderais d'utiliser un framework de pool de connexion développé, testé et maintenu par un tiers, tel que C3P0 ou Proxool. – BalusC

Répondre

2
for (Set<IConnection> set : scope.getConnections()) { 
    for (IConnection iConnection : set) { 
     // use each iConnection 
    } 
} 
+1

Où sont vos 'génériques'? –

3
Collection<Set<IConnection>> sets = scope.getConnections(); 

for (Set<IConnection> set : sets) { 
    for (IConnection connection : set) { 
    //do something 
    } 
} 
+1

Et où sont vos 'génériques'? –

+1

Les génériques étaient là, mais Bozho n'utilisait pas correctement le style de code. Je l'ai arrangé pour lui. –

+0

Ah, oui, désolé. J'étais pressé et je n'ai pas vérifié :) – Bozho

2

Je vous recommande de ne pas retourner les connexions de la manière que vous faites.
Votre GetConnections doit retourner seulement

Collection<IConnection> 

public Collection<IConnection> getConnections() 
{ 
    return connections; 
} 

l'intérieur de votre classe, vous pouvez choisir la façon dont vous voulez ou devez stocker les

private Set<IConnection> connections; 

Considérez double boucle comme un problème dans la conception de votre classe.
Si, en tant qu'utilisateur de votre classe, je dois écrire une double boucle chaque fois que j'arrêterai d'utiliser votre classe. Alors, allez faire vos collègues.

for (IConnection connection : provider.getConnections()) 
{ 
    connection.doAction(); 
} 
+0

scope.getConnections() vient d'une bibliothèque référencée donc je ne peux pas faire ça, je l'utilise juste – Omu

+0

Ok. J'ai compris. Si vous avez juste besoin de toutes les connexions, je recommanderais d'écrire une classe wrapper ou une méthode Util deux boucles sur les connexions. –

0

Les deux-emboîtées pour boucles réponse est probablement tout ce dont vous avez besoin, mais notez que vous pouvez aussi passer la collection « connexions » à Iterables.concat() dans google-collections, et sortir un "aplati" itérable.

http://google-collections.googlecode.com

Questions connexes