Как перебрать коллекцию <Set <IConnection>> - PullRequest
1 голос
/ 14 ноября 2009

У меня есть что-то вроде этого:

something need here  = scope.getConnections();

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

Мне нужно пройти через все соединения (то, что возвращает getConnections())

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

Ответы [ 4 ]

3 голосов
/ 14 ноября 2009
Collection<Set<IConnection>> sets = scope.getConnections();

for (Set<IConnection> set : sets) {
  for (IConnection connection : set) {
     //do something
  }
}
2 голосов
/ 14 ноября 2009

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

Collection<IConnection>

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

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

private Set<IConnection> connections;

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

for (IConnection connection : provider.getConnections()) 
{
    connection.doAction();
}
2 голосов
/ 14 ноября 2009
for (Set<IConnection> set : scope.getConnections()) {
   for (IConnection iConnection : set) {
      // use each iConnection
   }
}
0 голосов
/ 18 ноября 2009

Вероятно, вам нужен ответ «два вложенных цикла», но обратите внимание, что вы также можете передать коллекцию 'connections' в Iterables.concat () в google-collection и получить одну "уплощенную" итерацию .

http://google -collections.googlecode.com

...