【问题标题】:Java, How to add values to Array List used as value in HashMapJava,如何将值添加到用作 HashMap 中的值的数组列表
【发布时间】:2011-12-19 15:16:06
【问题描述】:

我拥有的是一个名为examListHashMap<String, ArrayList<String>>。我想用它来保存一个人正在参加的每门课程的成绩。所以这个HashMap 的关键是couresID,值是这个人所有成绩(考试尝试)的ArrayList

问题是我知道如何正常使用数组列表和哈希图,但我不知道如何从这个例子开始。那么,我将如何在HashMap 内的ArrayList 中添加一些内容?

【问题讨论】:

    标签: java arraylist hashmap


    【解决方案1】:

    首先,您必须在HashMap 中查找正确的ArrayList

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

    然后,将新成绩添加到ArrayList

    myAList.add(newGrade)
    

    【讨论】:

      【解决方案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);
      

      希望这会有所帮助!

      【讨论】:

      • 我怎样才能得到键、值?
      • @David 使用 HashMap 的 keySet() 方法。它将返回上例中为字符串的所有键。然后对于每个键,您可以使用 HashMap 的 get(key) 方法获取相应的 ArrayList,其中“键”是您之前检索到的键。希望这会有所帮助!
      • @greenhorn 没问题!
      【解决方案3】:

      您可以使用具有多值映射实现的 Google Guava 库(Apache Commons Collections 也有实现,但没有泛型)。

      但是,如果您不想使用外部库,则可以执行以下操作:

      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.
      

      【讨论】:

      • 还有 Spring MultiValueMap 和 LinkedMultiValueMap
      • 很好的例子,正是像我这样的 Java n00b 所需要的。
      【解决方案4】:

      首先您检索值(给定一个键),然后向其中添加一个新元素

          ArrayList<String> grades = examList.get(courseId);
          grades.add(aGrade);
      

      【讨论】:

        【解决方案5】:
        • 首先创建HashMap。

          HashMap> mapList = new HashMap>();

        • 根据您的输入键从 HashMap 中获取值。

          ArrayList arrayList = mapList.get(key);

        • 向数组列表添加值。

          arrayList.add(addvalue);

        • 然后再次将 arraylist 放在该键值上。 mapList.put(key,arrayList);

        它会起作用的.....

        【讨论】:

        • 有必要把arraylist放回hashmap吗?还是通过引用添加项目?
        【解决方案6】:

        Java 8+ 具有 computeIfAbsent

        examList.computeIfAbsent(map.get(id), k -> new ArrayList<>());
        map.get(id).add(value);
        

        https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#computeIfAbsent-K-java.util.function.Function-

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多