【发布时间】:2018-05-29 11:36:53
【问题描述】:
我想知道是否有更有效的方法来处理哈希映射。
我有以下 Map(主),它由其键和另一个 Map 作为值组成。
final Map<String,Map<Boolean,String>> primaryMap = new HashMap<>();
Map<Boolean,String> secondaryMap = new HashMap<>();
对于每个键,我分配了 2 个辅助映射,并再次初始化辅助映射。顺序类似于下面显示的顺序:
secondaryMap = new HashMap<>();
secondaryMap.put(true, "A");
primaryMap.put("DOG", listedMap);
secondaryMap.put(false, "B");
primaryMap.put("DOG", listedMap);
secondaryMap = new HashMap<>();
secondaryMap.put(true, "C");
primaryMap.put("CAT", listedMap);
secondaryMap.put(false, "D");
primaryMap.put("CAT", listedMap);
是否有更有效的方法来做到这一点?
secondaryMap.clear()在调用secondaryMap = new HashMap<>();之前对内存有影响吗
非常感谢,
凯特
【问题讨论】:
-
listedMap和secondaryMap应该是同一个东西吗? -
当然,你至少可以调用一次primaryMap.put("DOG",listedMap)(和"CAT"一样)
-
每个内部地图最多可以有两个元素。你能简单地使用一对两个参考吗?如果您想区分丢失的键和映射到
null的键,可以向节点添加一对布尔值。 -
Map<Boolean, String> secondaryMap = primaryMap.computeIfAbsent("DOG", k -> new HashMap<>());是在地图中使用地图的更好方式 - 如果您想要空间效率,您还可以使用字符串地图,例如map.put("DOG", "AB")然后.getOrDefault("DOG", " ").charAt(boolValue ? 0 : 1)