1

只是想知道是否有办法在 Java 中克隆 NamingEnumeration?我的程序在 LDAP 服务器中搜索人员,可能需要几秒钟才能完成。要获得我使用以下结果的数量:

NamingEnumeration results = null;
NamingEnumeration results2 = null;

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

但是由于 results2 只是在我显示结果时对结果的引用,因此 results.hasMore() 将始终返回 false。

有没有办法克隆“结果”而不必重新进行搜索并将其分配给“结果2”?

谢谢,-皮特

4

3 回答 3

4

无法保证如果您重做搜索,您将得到相同的答案。

简单的解决方案是将结果复制到ListArrayList具体而言)。

于 2009-06-09T14:34:41.583 回答
3

通常,如果您需要复制Enumeration(或Iterator),则将内容移动到List. 大多数枚举不能直接克隆。您可以手动创建列表或使用方法Collections.list(我在那里错过了一会儿)。

于 2009-06-09T14:36:43.933 回答
2

使用 Collections.list(results) 将结果放入列表中,然后使用 List.size 获取计数,并遍历列表。

于 2009-06-09T14:38:35.693 回答