【发布时间】:2016-07-14 13:51:11
【问题描述】:
Java 新手,想知道是否有办法将 HashMap 的值设为字符串或 ArrayList:
HashMap<String, HashMap<String, ArrayList<String>>> map = new HashMap<String, HashMap<String, ArrayList<String>>>();
map.putIfAbsent("238991", new HashMap<String, ArrayList<String>>());
map.get("238991").put("OrderID", new ArrayList<>());
map.get("238991").get("OrderID").add("1234H");
map.get("238991").get("OrderID").add("1233B");
map.get("238991").put("Name", new ArrayList<>());
map.get("238991").get("Name").add("Smith, John");
System.out.println(map.get("238991"));
System.out.println(map.get("238991").get("Name").get(0));
如果可以的话,我宁愿只为名称添加一个字符串,而不是只访问列表的第一个元素。这可能吗?
【问题讨论】:
-
您能否详细说明您要做什么? o.O
-
要么/要么?不,除非你创建一个
StringOrArrayList类型,并自己实现不相交的联合逻辑。 -
在python中,我可以创建嵌套字典,这就是我想要做的。有一个 id 与许多不同的属性相关联。我将它们放入 HashMap 中,以便可以遍历它们并访问要放入完整字符串的元素。每个用户 ID 号 (238991) 有多个 OrderID,但只有 1 个名称。然后,每个 OrderID 将有 3 或 4 个与之关联的字符串。我的目标是连接与 1 个用户 ID 号的所有 OrderID 关联的所有字符串。
-
Java 不是 python。有类型。
-
String 和 ArrayList 都是 Object 的子类型——你可以只拥有一个值类型为 Object 的 hashmap。这不是建议。但你可以这样做 - 扔掉打字,只需要一个像 Python 的
dict这样的任何容器。