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