Android - заполнить хэш-карту различными типами данных - PullRequest
0 голосов
/ 03 июля 2018

Возможно ли заполнить 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"));

Или есть другой правильный (или лучший) способ, чем этот? потому что, когда я пытаюсь напечатать «карту», ​​ключ «опция» не имеет никакого значения.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы можете хранить данные следующим образом:

    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<String, Object>, поскольку его значением может быть любой тип объекта

0 голосов
/ 03 июля 2018

Вы не можете сделать это, вы должны правильно указать тип данных,

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"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...