2009-11-14 5 views
1

У меня есть что-то вроде этого:Как итерацию через Collection <Set <IConnection>>

something need here = scope.getConnections(); 

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

мне нужно перебрать все соединения (материал, что getConnections() возвращается)

Как сделать это?

+0

У вас есть и IDE? Большинство из них помогает записать значение типа возвращаемого значения, а также вставить код цикла-коллекции. –

+0

:) Да, у меня есть eclipse, я просто очень новичок в java, и eclipse – Omu

+0

Вы изобретаете пул соединений? Я бы рекомендовал использовать стороннюю тщательно разработанную, проверенную и поддерживаемую структуру объединения пулов, такую ​​как C3P0 или Proxool. – BalusC

ответ

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

Где твои «дженерики»? –

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

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

И где ваши «дженерики»? –

+1

Дженерики были там, но Божо не использовал стиль кода правильно. Я исправил это для него. –

+0

А, да, извините. Я торопился и не проверял :) – Bozho

2

Я рекомендовал бы вам не вернуться соединения так, как вы делаете.
Ваш getConnections должен возвращать только

Collection<IConnection> 

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

Внутри вашего класса вы можете выбрать, как вы хотите или должны хранить их

private Set<IConnection> connections; 

Рассмотрим двойную петлю как проблема в вашем дизайне класса.
Если я как пользователь вашего класса должен писать двойной цикл каждый раз, когда я перестану использовать ваш класс. Так будут твои коллеги.

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

scope.getConnections() из справочной библиотеки, поэтому я не могу этого сделать, я просто использую ее – Omu

+0

Хорошо. Я понял. Если вам просто нужны все подключения, я бы рекомендовал написать класс-оболочку или метод Util два цикла по соединениям. –

0

Два вложенных-за петли ответа, вероятно, все, что вам нужно, но учтите, что вы могли бы также передать коллекцию «Связи» к Iterables.concat() в Google-коллекции, и выйти один «сплющенный» истребитель.

http://google-collections.googlecode.com

Смежные вопросы