在MultiValuedMap中添加空映射

时间:2017-12-20 09:35:16

标签: java collections apache-commons

我在commons-collections中使用MultiValuedMap。我试图在地图中添加一个空列表条目。

就像你有Map<String, List<String>>一样,你会put("string", new ArrayList<String>())

我可以使用MultiValuedMap吗?

我试过了:

map.asMap().put(stringValue, new ArrayList<>())

还有:

map.put(stringValue, null)

第一行抛出一个异常(UnsupportedOperation),第二行在列表中有一个null值,这是我不想要的。

1 个答案:

答案 0 :(得分:2)

如果没有值,get方法返回一个空列表,因此不需要初始化任何内部列表。如果你必须区分不存在的键和映射到空集合的键,它可能会混淆像contains(key)这样的方法的语义。

这样的任何行为都是特定于实现的,并且可能因库版本而异。但即使看implementation,你似乎也无法拥有一个空的内部列表。内部列表仅在实际包含至少一个元素时进行初始化,并在删除所有元素时删除。