我在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
值,这是我不想要的。
答案 0 :(得分:2)
如果没有值,get
方法返回一个空列表,因此不需要初始化任何内部列表。如果你必须区分不存在的键和映射到空集合的键,它可能会混淆像contains(key)
这样的方法的语义。
这样的任何行为都是特定于实现的,并且可能因库版本而异。但即使看implementation,你似乎也无法拥有一个空的内部列表。内部列表仅在实际包含至少一个元素时进行初始化,并在删除所有元素时删除。