Получить объект с помощью Collections.binarySearch - PullRequest
0 голосов
/ 02 марта 2011

Я объявил класс POJO с id, Name, age, contactNumber and Address атрибутами. Я объявил все добытчики и сеттеры. Сейчас я использую HashMap<String, POJO_CLASS>. По умолчанию я сортирую эти значения по атрибуту Name. Теперь мне нужно выполнить поиск объекта по идентификатору, и этот метод должен вернуть объект (который хранится в HashMap как значение). Так как я могу использовать Collections.binarySearch() для этого требования.

Ответы [ 3 ]

1 голос
/ 02 марта 2011

500 объектов не так много, поэтому я бы просто поместил их во второй HashMap с ключом id.

1 голос
/ 02 марта 2011

Лучший вопрос: зачем тебе это?Поиск HashMap будет очень быстрым, время O (1), тогда как бинарный поиск займет O (lg (N)) время в списках, которые имеют возможности произвольного доступа (ArrayList).

Если вы действительно хотите использовать бинарный поиск, вам нужно сохранить ваши объекты в списке (вероятно, ArrayList), отсортировать этот список и затем вызвать Collections.binarySearch(list, value).

0 голосов
/ 02 марта 2011

Если вам нужен быстрый поиск как по имени, так и по идентификатору, вам необходимо постоянно хранить POJO в двух разных структурах данных. В этом случае создание второй HashMap без идентификатора даст вам лучшую производительность.

Это может быть излишне сложно, если карта не такая большая или поиск по идентификатору является относительно редким явлением. В этом случае я бы просто выполнил линейный поиск по HashMap.

...