2016-06-13 2 views
0

Мне нужно сделать приложение, которое будет моделировать телефонную книгу в java, используя хеш-карту (ы). Я хочу реализовать 2 метода поиска (введите имя, чтобы получить номер и введите число, чтобы получить имя).Телефонная книга с реализацией hashmap в java

Есть ли способ заставить оба метода работать только с 1 хэш-картой, определенной следующим образом: HashMap<Person, Number> pb = new HashMap<>(); (где Person и Number являются классами)? не

+0

Это должно быть вполне возможно. –

+1

Вы могли бы, но вам нужно было бы перебирать каждое значение, чтобы найти номер. Просто наблюдение: номера гарантированно уникальны. Имена нет. Для этого больше смысла, поскольку это ключ. –

ответ

2

Нет вам нужно 2 Maps в этом случае Map<Person, Number> и Map<Number, Person>, если вы хотите иметь быстрый доступ к данным только с одной карты, которую нужно будет перебирать значения, которые, конечно, гораздо медленнее.

Вы также можете использовать BiMap от Google гуавы, чтобы сделать как с одной картой

bimap (или «двунаправленная карте») является карта, которая сохраняет уникальность его ценностей, а также, что из его ключи. Это ограничение позволяет bimaps поддержать «обратную точку зрения», который является еще bimap , содержащий те же элементы, как этот bimap, но с обратными ключами и значения

0

Это может быть сделано с помощью (карты двунаправленного) BidiMap доступен с коллекцией apache commons. См. https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/BidiMap.html для более подробной информации. Но в этом случае имена и номера должны быть уникальными. Если это невозможно, то вам придется либо сохранить две карты, либо использовать одну карту и перебрать значения.

Смежные вопросы