Я хочу сохранить 3 значения в 1 ключе. Hashmap может содержать только 1 ключ, 1 значение, поэтому его нельзя использовать. Итак, какими еще способами я могу получить от одного ключа значение A / B / C.
Ключ: строка
Значения: String / String / int
Я хочу сохранить 3 значения в 1 ключе. Hashmap может содержать только 1 ключ, 1 значение, поэтому его нельзя использовать. Итак, какими еще способами я могу получить от одного ключа значение A / B / C.
Ключ: строка
Значения: String / String / int
Создайте объект для хранения ваших 3 значений, а затем новый объект будет вашим значением в паре «ключ-значение».
Вот пример реализации:
class TripleValue {
String A;
String B;
int C;
public TripleValue(String a, String b, int c) {
A = a;
B = b;
C = c;
}
}
public static void main() {
Map<String, TripleValue> myMap = new HashMap<String, TripleValue>();
myMap.put("SomeKey", new TripleValue("String1", "String2", 10));
}
System.out.println(entry.getValue().A)
. getValue () просто возвращает объект TripleValue. Затем вам нужно получить доступ к свойствам разницы в объекте TripleValue.
- person Ian Dallas; 11.09.2012
Одним из способов может быть использование ArrayList / Set в качестве значения для ключа.
Пример:
List myTempList = new ArrayList();
myTempList.add("Hi");
myTempList.add("Hello");
myTempList.add("How are you");
myMap.key("key", myTempList);
Другой подход заключается в том, что если вы знаете, что количество значений для каждого ключа всегда будет одинаковым, вы можете создать объект-держатель и установить значения для этого объекта и поместить его на карту.
List
, которое всегда будет содержать 3 элемента, вероятно, не лучшая идея.
- person obataku; 10.09.2012
Платформа Java не поддерживает Multimap, есть способ обойти это, см. Ниже.
Map<Object,ArrayList<Object>> multiMap = new HashMap<Object,ArrayList<Object>>();
Также взгляните на эту библиотеку Guava-библиотеки
Пытаться
Map<Integer, List<yourObject>> m = new HashMap<>();
Затем вам нужно будет проверить, присутствует ли список для ключа. если да, то добавьте в список. Иначе создайте ArrayList и добавьте его
Например:
public add(String key, MyObj myobj){
if (this.contains(key) ) {
this.get(key).add(myObj);
}else {
List<MyObject> list = new ArrayList<MyObject>();
list.add(myObj);
m.put(key, list);
}
}
>
после объявленного типа m
. Кроме того, начиная с Java 7, вы можете разрешить компилятору определять параметризованный тип созданного HashMap
, т.е. new HashMap<>()
- person obataku; 10.09.2012
HashMap
- как будет выглядеть код, использующий эту функцию?
- person nuala; 11.09.2012