Java - создание объектов с парами ключ / значение? - PullRequest
8 голосов
/ 05 августа 2011

Я хочу сделать следующие типы объектов.Это мое желание более высокого уровня, которое я хотел бы выяснить в Java:

ListObject (key, String): каждый ключ соответствует значению String;ключ является самой строкой

ListObject (key, String []): каждый ключ соответствует массиву Strings;ключ - это сама строкатип?

Спасибо.

Ответы [ 5 ]

16 голосов
/ 05 августа 2011

Вам, кажется, нужно несколько Map с, а не List с.Проверьте Javadoc для реализации карты;наиболее распространенным является HashMap, но есть также отсортированные, параллельные, детерминированные итерируемые реализации и т. д.

ListObject: каждый ключ соответствует значению String;ключ - это сама строка

Map<String, String>

ListObject: каждый ключ соответствует массиву строк;ключ - это сама строка

Map<String, String[]>

(или предпочтительно Map<String, List<String>>)

ListObject: та же сделка, но с двумя полями значений на ключ.

Map<String, UserDefinedClassWithTwoFields>
4 голосов
/ 05 августа 2011

Map<KeyType,ValueType>, который реализуется HashMap<KeyType, ValueType> и TreeMap<KeyType, ValueType>, среди прочего - HashMap неупорядочен и упорядочен TreeMap.

Другими полезными картами являются LinkedHashMap, что похоже на HashMap, но повторяется в порядке вставки, и com.google.common.collect.Maps в Гуаве, в котором есть набор служебных методов, и com.google.common.collect.ImmutableMap, который является неизменной реализацией карты.

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

2 голосов
/ 30 сентября 2011

Вы можете использовать карту для этой цели.Общий синтаксис для карты:

Map<String, SomeObject> = new HashMap<String, SomeObject>();

Теперь в java есть четыре типа карт:

HASH MAP - используйте эту карту, когда вам все равноо порядке отображения элементов при итерации по карте.

HASH TABLE - Синхронизированная версия хэш-карты.

LINKED HASH MAP - Используйте это, когда вы заботитесь о порядке вставки.

ДЕРЕВО КАРТА - Используйте это, если вы хотите пользовательский порядок сортировки.

1 голос
/ 05 августа 2011

Карта используется для создания ассоциативных массивов в Java.

Карта для вашего первого примера.Каждый ключ String связан со значением String.

Карта для вашего второго примера.Значения - это массивы String.

Для вашего последнего примера вы должны создать собственный класс с двумя полями: одно - String, а другое - String [].Затем создайте карту, которая связывает String с объектом вашего типа.

0 голосов
/ 05 августа 2011

Java Map тип, скорее всего, сработает. A Map<KeyType, ValueType> хранит пары ключ-значение, поэтому у вас будет Map<String, String>, Map<String, List<String>> и Map<String, SomePairType>.

Map - это просто интерфейс: вам нужно выбрать реализацию. HashMap и TreeMap - ваши лучшие ставки. Оба хороши, но TreeMap будет работать только с сопоставимыми типами ключей. Для ключей, поскольку String сравним с другими строками, вы можете использовать любую реализацию карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...