Клонировать Java NamingEnumeration? - PullRequest
1 голос
/ 09 июня 2009

Просто интересно, есть ли способ клонировать NamingEnumeration в Java? Моя программа ищет людей на сервере 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 - это просто ссылка на результат, когда я показываю результаты result.hasMore () всегда возвращает false.

Есть ли способ клонировать «результаты» без необходимости предварительно преобразовывать результаты поиска и назначать его «results2»?

Спасибо, -Пит

Ответы [ 3 ]

4 голосов
/ 09 июня 2009

Нет гарантии, что если вы повторите поиск, вы получите тот же ответ.

Простое решение - скопировать результаты в List (точнее, ArrayList).

3 голосов
/ 09 июня 2009

Как правило, если вам нужно сделать копию Enumeration (или Iterator), вы перемещаете содержимое в List. Большинство перечислений не могут быть напрямую клонированы. Вы можете создать список вручную или использовать метод Collections.list (который я пропустил там некоторое время).

2 голосов
/ 09 июня 2009

Используйте Collections.list (результаты), чтобы поместить результаты в список, а затем используйте List.size, чтобы получить число и выполнить итерацию по списку.

...