2009-11-14 58 views
1

迭代我有這樣的事情:如何通過一個Collection <集<IConnection>>

something need here = scope.getConnections(); 

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

我需要通過所有連接迭代(東西了getConnections()回報)

如何做到這一點?

+0

你有IDE嗎?它們中的大多數有助於編寫返回類型值,並且還可以插入collection-loop-code。 – 2009-11-14 15:21:06

+0

:)是的,我有日食,我只是非常新的Java和日食 – Omu 2009-11-14 15:24:03

+0

你是否重新創建連接池?我建議使用完全開發,測試和維護連接池框架的第三方,如C3P0或Proxool。 – BalusC 2009-11-14 15:39:56

回答

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

你的'泛型'在哪裏? – 2009-11-14 15:23:32

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

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

哪裏是你的'泛型'? – 2009-11-14 15:27:57

+1

泛型在那裏,但Bozho沒有正確使用代碼風格。我爲他解決了這個問題。 – 2009-11-14 15:30:37

+0

啊,是的,對不起。我很着急,沒有檢查:) – Bozho 2009-11-14 20:08:08

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 2009-11-14 15:53:46

+0

好的。我知道了。如果你只需要所有的連接,我會建議在連接上寫一個包裝類或者Util方法兩個循環。 – 2009-11-14 15:59:15

0

兩嵌套for循環的答案很可能是你所需要的,但要注意,你也可以通過「關係」集合Iterables.concat()在谷歌的集合,並獲得了一個「扁平化」迭代。

http://google-collections.googlecode.com

相關問題