只是想知道是否有办法克隆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只是对结果的引用.hasMore()将始终返回false。
有没有办法克隆'结果'而无需重新预先形成搜索并将其分配给'results2'?
谢谢,-Pete
答案 0 :(得分:4)
无法保证如果您重做搜索,您将获得相同的答案。
简单的解决方案是将结果复制到List
(ArrayList
具体)。
答案 1 :(得分:3)
一般情况下,如果您需要复制Enumeration
(或Iterator
),请将内容移至List
。大多数枚举不能直接克隆。您可以手动创建列表或使用方法Collections.list
(我错过了一段时间)。
答案 2 :(得分:2)
使用Collections.list(results)将结果放入列表中,然后使用List.size获取计数,并遍历列表。