A Map
- это отображение ключей на значения. Для каждого элемента списка необходимо определить, какой должен быть ключ и какое должно быть значение.
Ваш оригинальный код:
for(int i=0;i<list.size();i++) {
HashMap hMap=new HashMap();
hMap.put("Data", list);
}
Это эффективно сопоставляет ключ "Данные" со значением list
, повторяя это отображение несколько раз, но у вас есть только запись .
Вот пример взятия List<String>
и построения карты из буквы в строку, начиная с этой буквы из списка.
List<String> list = Arrays.asList(
"abc", "def", "ghi", "ijk", "abracadabra"
);
Map<Character,String> map = new HashMap<Character,String>();
for (String s : list) {
map.put(s.charAt(0), s);
}
System.out.println(map); // prints "{g=ghi, d=def, a=abracadabra, i=ijk}"
System.out.println(map.get('i')); // prints "ijk"
System.out.println(map.containsKey('x')); // prints "false"
Обратите внимание, что "abc"
"потеряно" на карте. Это потому, что вы можете сопоставить только один ключ с одним значением. С другой стороны, вы можете иметь Map<Character,Set<String>>
, то есть карту от каждого ключа до набора значений. По сути, это мультикарта, и у Guava есть реализация.
Смежные вопросы