Java: Какую структуру данных использовать для имитации ассоциативных массивов PHP? - PullRequest
3 голосов
/ 08 октября 2009

Мне нужна структура данных, которая позволяет мне сопоставлять ключи со значениями, такими как ассоциативные массивы PHP. Каждый ключ может существовать только один раз, но значение может быть сопоставлено с любым количеством ключей. Что я ищу? Что-то в коллекциях Google Commons?

Ответы [ 4 ]

7 голосов
/ 08 октября 2009

Структура Map - это то, что вам нужно. Хорошей реализацией является HashMap.

Этот тип данных не позволяет использовать одно и то же значение для ключа, но вы можете иметь столько повторяющихся значений, сколько хотите.

Пример использования:

Map<String, String> map = new HashMap<String, String>();
map.put("FirstName", "LastName");

System.out.println(map.get("FirstName")); // Prints 'LastName'
System.out.println(map.put("FirstName", "Foo")); // Prints 'LastName'
System.out.println(map.get("FirstName")); // Prints 'Foo'

Другими словами, ключ может существовать только один раз. В противном случае значение перезаписывается.

4 голосов
/ 08 октября 2009

Вы ищете HashMap , например, HashMap<K,V>. Первый сопоставляет объекты с объектами, а второй сопоставляет типы по вашему выбору (как и другие обобщения).

0 голосов
/ 08 октября 2009

HashMap - путь к успеху. Я на самом деле смотрю на вещи с другой стороны, когда впервые начал программировать на PHP. Мне было интересно, как я могу реализовать HashMap? Затем я обнаружил ассоциативные массивы.

0 голосов
/ 08 октября 2009

Что не так с обычным HashMap? Если ваши значения являются строками, вы получите счетчик ссылок бесплатно и если вам нужно сослаться на конкретный экземпляр объекта, просто не выделяйте его, а используйте существующую ссылку

...