Java, Как добавить значения в список массивов, используемых в качестве значения в HashMap - PullRequest
19 голосов
/ 01 ноября 2011

У меня есть HashMap<String, ArrayList<String>>, называемый examList.Я хочу использовать его для сохранения оценок каждого курса, который посещает человек.Поэтому ключом для этого HashMap является couresID, а значением является ArrayList всех оценок (попыток сдачи экзамена), которые этот человек сделал.

Проблема в том, что я знаю, как работать со списками массивов и хэш-картаминормально, но я не уверен, как начать с этого примера.Так как бы я, например, добавить что-то к ArrayList внутри HashMap?

Ответы [ 5 ]

36 голосов
/ 01 ноября 2011

Вы можете использовать библиотеку Google Guava, в которой есть реализации для Multi-Value-Maps (в коллекциях Apache Commons также есть реализации, но без обобщений).

Однако, если вы не хотите использовать внешнюю библиотеку, вы должны сделать что-то вроде этого:

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.
7 голосов
/ 01 ноября 2011
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);

Надеюсь, это поможет!

4 голосов
/ 30 января 2015
  • Сначала создайте HashMap.

    HashMap> mapList = new HashMap> ();

  • Получите значение из HashMap против вашей клавиши ввода.

    ArrayList arrayList = mapList.get (key);

  • Добавить значение для arraylist.

    arrayList.add (AddValue);

  • Затем снова поместите arraylist против этого ключевого значения. mapList.put (ключ, ArrayList);

Это будет работать .....

3 голосов
/ 01 ноября 2011

Сначала вы получаете значение (с учетом ключа), а затем добавляете в него новый элемент

    ArrayList<String> grades = examList.get(courseId);
    grades.add(aGrade);
2 голосов
/ 01 ноября 2011

Во-первых, вы должны найти правильный ArrayList в HashMap:

ArrayList<String> myAList = theHashMap.get(courseID)

Затем добавьте новую оценку в ArrayList:

myAList.add(newGrade)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...