2009-06-09 6 views
1

JavaでNamingEnumerationをクローンする方法があるのだろうか?私のプログラムは人のためにLDAPサーバーを検索し、完了に数秒かかることがあります。私は、以下の使用している結果の数を取得するには、次の Java NamingEnumerationをクローンしますか?

NamingEnumeration results = null; 
NamingEnumeration results2 = null; 

results = ctx.search("", "("+searchAt+"=" +searchVal +")", controls); 
results2 = result; 
int i = 0; 
while(results2.hasMore()) 
{ 
    results2.next(); 
    i++; 
} 

しかしresults2以来

iは結果results.hasMoreを(表示を通過するときは常にfalseを返します)結果とするだけの参照です。

検索結果を再プリフォームして 'results2'に割り当てる必要なく、 '結果'を複製する方法はありますか?

おかげで、-Pete

答えて

2

Collections.list(results)を使用して結果をリストに入れ、次にList.sizeを使用してカウントを取得し、リストを反復処理します。

4

検索をやり直す場合は、戻って同じ答えを得るだろうという保証はありません。

簡単な解決策は、結果をList(具体的にはArrayList)にコピーすることです。

+0

ありがとうございました! 15文字 –

+0

宜しくお願いします。 Upish Yishai! –

3

一般にEnumeration(またはIterator)のコピーを作成する必要がある場合は、内容をListに移動します。ほとんどの列挙は直接クローン可能ではありません。あなたは手でリストを作成するか、Collections.listというメソッドを使用することができます(私はそこで一度も見逃しました)。