У меня есть список ArrayList, как показано ниже:

Id1, value1
Id1, value2
Id2, value1
Id2, value2
Id2, value3
Id3, value1
Id3, value2
Id3, value3
Id3, value4
Id3, value5 

и т.д...

В классе у меня есть значение id. Мне нужно получить значения, соответствующие значению id. Например, если я задаю id1, то мне нужны значения value1 и value2. Какой механизм коллекции я должен использовать для достижения своей цели. Я новичок, пожалуйста, подскажите мне. Заранее спасибо. Все предложения приветствуются.

Kiran

Ответов: 2

Ответы (2)

Предположим, что ключи имеют тип String, а значения - тип String. Вы можете использовать Map>.

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

Здесь приведен фрагмент кода, который сначала проверяет, есть ли уже ключи, если нет, то создает новый пустой список. Значения добавляются в список и помещаются в карту. Для получения значений из карты можно использовать апи get(Key).

public void add(String key, String value) {
  List values = map.get(key);
  if (values == null) {
    values = new ArrayList();
  }
  values.add(value);
  map.put(key, values);
}

Посмотрите на Мультикарту Гуава: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html

Guava - это библиотека от Google, которая предоставляет множество полезных утилит, часто необходимых в Java.

2022 WebDevInsider