Java, Как добавить значения в список массивов, используемый как значение в HashMap
У меня есть HashMap<String, ArrayList<String>>
, называемый examList
. Я хочу использовать его для того, чтобы сохранить оценки каждого курса, на котором человек посещает. Таким образом, ключ для этого HashMap
равен couresID
, а значение равно ArrayList
всех оценок (попыток сдачи экзамена), которые этот человек сделал.
Проблема заключается в том, что я знаю, как работать с списками массивов и хэш-картами обычно, но я не уверен, как начать с этого примера. Итак, как бы я, или пример, добавить что-то в ArrayList
внутри HashMap
?
Ответы
Ответ 1
Вы можете использовать библиотеку Google Guava, которая имеет реализации для Multi-Value-Maps (коллекции Apache Commons также реализуются, но без генериков).
Однако, если вы не хотите использовать внешнюю библиотеку lib, то вы сделали бы что-то вроде этого:
if (map.get(id) == null) { //gets the value for an id)
map.put(id, new ArrayList<String>()); //no ArrayList assigned, create new ArrayList
map.get(id).add(value); //adds value to list.
Ответ 2
String courseID = "Comp-101";
List<String> scores = new ArrayList<String> ();
scores.add("100");
scores.add("90");
scores.add("80");
scores.add("97");
Map<String, ArrayList<String>> myMap = new HashMap<String, ArrayList<String>>();
myMap.put(courseID, scores);
Надеюсь, это поможет!
Ответ 3
-
Сначала создайте HashMap.
HashMap > mapList = new HashMap > ();
-
Получите значение от HashMap против вашего ключа ввода.
ArrayList arrayList = mapList.get(ключ);
-
Добавить значение в arraylist.
arrayList.add(AddValue);
-
Затем снова поставьте arraylist против этого значения ключа.
mapList.put(ключ, ArrayList);
Он будет работать.....
Ответ 4
Сначала вы возвращаете значение (с учетом ключа), а затем добавляете к нему новый элемент
ArrayList<String> grades = examList.get(courseId);
grades.add(aGrade);
Ответ 5
Сначала вам нужно найти правильный ArrayList
в HashMap
:
ArrayList<String> myAList = theHashMap.get(courseID)
Затем добавьте новый класс в ArrayList
:
myAList.add(newGrade)