在单个HashMap中存储多个数据类型

时间:2017-01-03 06:38:25

标签: java android arrays hashmap

我想将intString的数组放入HashMap。这可能吗?什么是正确的方法?

这是我的HashMap:

Map<String, String> stringMap = new HashMap<>();

    stringMap.put("Text","fish" );
    stringMap.put("Diet","false");
    stringMap.put("CookingTime", "60");
    stringMap.put("OptionId", [7,8,8]);

我知道这行错了 - 如何在HashMap

中存储数组
    stringMap.put("OptionId", [7,8,8]);

1 个答案:

答案 0 :(得分:3)

您可以通过执行

在java中实例化一个数组
someMap.put("OptionId", new int[]{7,8,8});

否则,您将需要一个在数组中返回这些值的函数。

对于您的情况:如果要创建多种数据类型的HashMap,可以使用

HashMap<String, Object> map = new HashMap<String, Object>();

然后你可以把任何你想要的东西放在

map.put("key1", "A String");
map.put("key2",  new int[]{7,8,8});
map.put("key3", 123);

除了现在棘手的部分是你不知道什么是什么所以你需要使用instanceof来解析地图,除非你知道什么类型的对象在一个键上然后你可以{cast 1}}它到那种类型。

if(map.get("key1") instanceof String)
    String s = (String) map.get("key1"); // s = "A String"

int[] arr = (int[]) map.get("key2"); // arr = {7,8,8}