Java HashMap associative multi dimensional array can not create or add elements

前端 未结 4 1239
小蘑菇
小蘑菇 2020-12-09 17:33

Okay so I have spent several hours trying to wrap my head around this concept of a HashMap in Java but am just not able to figure it out. I have looked at many tutorials but

相关标签:
4条回答
  • 2020-12-09 17:54
    HashMap<String, HashMap<String, String>> myArray = new HashMap<String, HashMap<String, String>>();
    HashMap<String, String> value = new HashMap<String, String>();
    value.put("name", "English name");
    value.put("desc", "English description");
    value.put("keys", "English keywords");
    
    myArray.put("en" , value);
    
    value = new HashMap<String, String>();
    value.put("name", "French name");
    value.put("desc", "French description");
    value.put("keys", "French keywords");
    
    myArray.put("fr" , value);
    
    0 讨论(0)
  • 2020-12-09 17:57

    Unfortunately, there's no concise syntax for constructing populated maps in Java. You'll have to write it out long-hand. A separate helper method can make it a little simpler:

    HashMap<String, String> makeMap(String name, String desc, String keys) {
        HashMap<String, String> map = new HashMap<>();
        // Before Java 7, above must be: new HashMap<String, String>();
        map.put("name", name);
        map.put("desc", desc);
        map.put("keys", keys);
    }
    

    Then:

    HashMap<String, HashMap<String, String>> myArray = new HashMap<>();
    myArray.put("en",
        makeMap("english name", "english description", "english keywords"));
    // etc.
    

    You would retrieve it with:

    english_name = myArray.get("en").get("name");
    
    0 讨论(0)
  • 2020-12-09 18:02
    HashMap<String, HashMap<String, String>> myArray = new HashMap<String, HashMap<String, String>>();
    
    if (!myArray.containsKey("en")) {
        myArray.put("en", new HashMap<String, String>());
    }
    myArray.get("en").put("name", "english name");
    

    In Java you have to be explicit about when you are creating an object. In this case first we check if there is already a HashMap object stored in our outer HashMap under the key "en". If not, we create an empty one.

    Now to put a new value into it we have to first get it from the outer HashMap, then put the new value.

    0 讨论(0)
  • 2020-12-09 18:17
    import java.util.HashMap;
    public class Main
    {
        public static void main(String[] args) {
            // Creating array
            HashMap<String, HashMap<String, String>> myArray = new HashMap<String, HashMap<String, String>>();
            // Setting values
            for(int i=0; i<100;i++) {
                myArray.put("key1"+i, new HashMap<String, String>());
                myArray.get("key1"+i).put("key2"+i, "value"+i);
            }
            // Getting values
            for(int i=0; i<100; i++) {
            System.out.println(myArray.get("key1"+i).get("key2"+i));
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题