HashMap: один ключ, несколько значений

Как я могу получить третье значение для первого ключа на этой карте? Это возможно?

11 Solutions collect form web for “HashMap: один ключ, несколько значений”

Похоже, вы ищете мультимап . Guava имеет различные реализации Multimap , обычно создаваемые с помощью classа Multimaps .

Я бы предположил, что использование этой реализации, вероятно, будет проще, чем сворачивать ваши собственные, выработать то, как должен выглядеть API, тщательно проверять существующий список при добавлении значения и т. Д. Если в вашей ситуации есть особое отrotation к сторонним библиотекам, может быть стоит этого, но в противном случае Гуава – сказочная библиотека, которая, вероятно, поможет вам и с другим кодом 🙂

У вас есть что-то вроде этого?

 HashMap> 

Если это так, вы можете выполнить итерацию через свой ArrayList и получить элемент, который вам нравится, с помощью arrayList.get (i).

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

Это то, что я нашел в ответе на подобный вопрос

 Map> hm = new HashMap>(); List values = new ArrayList(); values.add("Value 1"); values.add("Value 2"); hm.put("Key1", values); // to get the arraylist System.out.println(hm.get("key1")); 

РЕЗУЛЬТАТ: [Значение 1, значение 2]

Попробуйте использовать коллекции для хранения значений ключа:

 Map> 

вы должны сами сохранить список значений

Я нашел блог в случайном поиске, я думаю, что это поможет сделать это: http://tomjefferys.blogspot.com.tr/2011/09/multimaps-google-guava.html

 public class MutliMapTest { public static void main(String... args) { Multimap myMultimap = ArrayListMultimap.create(); // Adding some key/value myMultimap.put("Fruits", "Bannana"); myMultimap.put("Fruits", "Apple"); myMultimap.put("Fruits", "Pear"); myMultimap.put("Vegetables", "Carrot"); // Getting the size int size = myMultimap.size(); System.out.println(size); // 4 // Getting values Collection fruits = myMultimap.get("Fruits"); System.out.println(fruits); // [Bannana, Apple, Pear] Collection vegetables = myMultimap.get("Vegetables"); System.out.println(vegetables); // [Carrot] // Iterating over entire Mutlimap for(String value : myMultimap.values()) { System.out.println(value); } // Removing a single value myMultimap.remove("Fruits","Pear"); System.out.println(myMultimap.get("Fruits")); // [Bannana, Pear] // Remove all values for a key myMultimap.removeAll("Fruits"); System.out.println(myMultimap.get("Fruits")); // [] (Empty Collection!) } } 

Размышление о карте с двумя ключами сразу заставило меня использовать определяемый пользователем ключ, и это, вероятно, было бы classом. Ниже приводится ключевой class:

 public class MapKey { private Object key1; private Object key2; public Object getKey1() { return key1; } public void setKey1(Object key1) { this.key1 = key1; } public Object getKey2() { return key2; } public void setKey2(Object key2) { this.key2 = key2; } } // Create first map entry with key . MapKey mapKey1 = new MapKey(); mapKey1.setKey1("A"); mapKey1.setKey2("B"); 

HashMap – одиночный ключ и несколько значений с использованием списка

 Map> map = new HashMap>(); // create list one and store values List One = new ArrayList(); One.add("Apple"); One.add("Aeroplane"); // create list two and store values List Two = new ArrayList(); Two.add("Bat"); Two.add("Banana"); // put values into map map.put("A", One); map.put("B", Two); map.put("C", Three); 

Вы можете сделать что-то вроде этого (добавьте модификаторы доступа по мере необходимости):

 Map> complexMap=new HashMap>(); 

Вы можете вставить такие данные:

  Map componentMap = new HashMap(); componentMap.put("foo","bar"); componentMap.put("secondFoo","secondBar"); complexMap.put("superFoo",componentMap); 

Созданная структура данных будет:

 {superFoo={secondFoo=secondBar, foo=bar}} 

Таким образом, каждое значение для ключа должно иметь уникальный идентификатор . Также дает O (1) для выборки, если ключи известны.

Напишите новый class, который содержит все значения, которые вам нужны, и используйте объект нового classа в качестве значения в вашем HashMap

 HashMap class MyObject { public String value1; public int value2; public List value3; } 
  • Запретить закрытие экрана активности Android на внешнем прикосновении
  • Не удалось указать целевые платформы. Проверьте правильность пути sdk android.
  • Как установить изображение экрана блокировки Android
  • Что находится внутри пакета com.sun?
  • Передача нескольких файлов Java через сокет
  • Установка значения свойства Singleton в Firebase Listener
  • Как вернуть массив из JNI в Java?
  • Как создать свою собственную библиотеку для разработки Android, которая будет использоваться в каждой написанной вами программе?
  • Google firebase проверяет, существует ли ребенок
  • Как добавить два java.lang.Numbers?
  • Запуск команд оболочки, хотя java-код на Android?
  • Interesting Posts

    Как добавить теги в файлы в Windows 7, чтобы они отображались в результатах поиска

    В PowerPoint существует ли способ создания печатной версии анимированного слайда?

    Как ответить с ошибкой HTTP 400 в методе Spring MVC @ResponseBody, возвращающем String?

    Есть ли ярлык для SELECT * FROM?

    Autohotkey – как переопределить состояние клавиатуры

    Как долго Microsoft будет поддерживать Windows XP Professional?

    Rails: update_attribute vs update_attributes

    Какую программу можно использовать для упаковки программного обеспечения в один исполняемый файл?

    RuntimeException: ваш контент должен иметь ListView, чей атрибут id – ‘android.R.id.list’

    Редактировать тему получаемого письма в Thunderbird 3.0

    Как заставить любую программу работать без полномочий администратора в Windows 7?

    Как создать загрузочный USB Flash PcRepair Kit?

    Как остановить ноутбук от разгона?

    Как найти IP-адрес моего мостового маршрутизатора?

    Поиск CSS Parser в java

    Давайте будем гением компьютера.