【问题标题】:Android - populate hashmap with different data typesAndroid - 使用不同的数据类型填充 hashmap
【发布时间】:2018-07-03 04:25:20
【问题描述】:

是否可以像这样填充 hashmap?

final HashMap<String, String> map = new HashMap<>();
            map.put("path", path);
            map.put("tableName", "table");
            map.put("fileType", fileType);

final HashMap<String, String> option = new HashMap<>();
            map.put("option", option.put("header", "true"));

或者还有比这更正确(或更好)的方法吗?因为当我尝试打印“地图”时,关键的“选项”没有任何价值。

提前致谢

【问题讨论】:

  • 您定义您的mapHashMap&lt;String, String&gt;。但是你把option - 一个HashMap&lt;String, String&gt; 放到你的map 上。那是你的问题。
  • 我想将 hashmap 作为一个值放在 hashmap 中,但也与字符串结合作为一个值 @SonhnLab
  • 使用HashMap&lt;String, Object&gt;

标签: android hashmap


【解决方案1】:

你不能这样做,你必须正确指定数据类型,

final HashMap<String, String> map = new HashMap<>();
        map.put("path", path); //path has to be a variable pointing to a string
        map.put("tableName", "table");
        map.put("fileType", fileType); // filetype has to be a variable pointing to a string

final HashMap<String, String> option = new HashMap<>(); 
        map.put("option", option.put("header", "true")); //this is wrong

HashMap<String,Map<String,String>> option = new HashMap<String,HashMap<String,String>>();
option.put("Key",map);

示例:创建和填充地图

Map<String, Map<String, Value>> outerMap = new HashMap<String, HashMap<String, Value>>();
Map<String, Value> innerMap = new HashMap<String, Value>();    
innerMap.put("innerKey", new Value());

存储地图

outerMap.put("key", innerMap);

检索地图及其值

Map<String, Value> map = outerMap.get("key");
Value value = map.get("innerKey"); 

【讨论】:

    【解决方案2】:

    你可以这样存储数据:

        public static void main(String[] args){
    
          Map<String, String> dataMap = new HashMap<>();
          dataMap.put("key1", "Hello");
          dataMap.put("key2", "Hello2");
    
          Map<String, Object> map = new HashMap<>();
          map.put("1", 1);
          map.put("2", dataMap);
          map.put("3", "Value3");
    
          Object obj = map.get("1");
          printData(obj);
    
          Object obj2 = map.get("2");
          printData(obj2);
    
          Object obj3 = map.get("3");
          printData(obj3);
    
       }
    
        private static void printData(Object obj) {
        if (obj instanceof Integer) {
            Integer integer =convertInstanceOfObject(obj, Integer.class);
            System.out.println(integer);
        }else if( obj instanceof HashMap){
    
            HashMap<String, String> resMap = convertInstanceOfObject(obj, HashMap.class);
    
            System.out.println(resMap);
        }else if( obj instanceof String ){
            String data = convertInstanceOfObject(obj, String.class);
    
            System.out.println(data);
        }
    }
    
    
    public static <T> T convertInstanceOfObject(Object o, Class<T> clazz) {
        try {
            return clazz.cast(o);
        } catch(ClassCastException e) {
            return null;
        }
    }
    

    输出:

    1
    {key1=Hello, key2=Hello2}
    Value3
    

    map 类型是Map&lt;String, Object&gt;,因为它的值可以是任何类型的 Object

    【讨论】:

      【解决方案3】:
         HashMap<String ,Object> data= new HashMap<>();
          data.put("post",myPost);
          data.put("username",userName);
          data.put("date" ,date);
      

      你可以在android studio-java中使用不同的数据类型和HashMap

      【讨论】:

        猜你喜欢
        • 2019-03-11
        • 2015-07-07
        • 2020-03-14
        • 1970-01-01
        • 2020-05-20
        • 1970-01-01
        • 2015-03-23
        • 2017-12-10
        • 2023-03-16
        相关资源
        最近更新 更多