重复键值对

Lio*_*cer 4 java data-structures

java中是否有接受键值对并允许重复的本机数据结构?我正在创建一个字符串中的字符清单,但有些字符出现不止一次。

前任

j -> false
a -> false
v -> false
a -> false
Run Code Online (Sandbox Code Playgroud)

PNS*_*PNS 5

您可以通过在映射中保存每个键值 (KV) 对的值列表来模拟多个键值 (KV) 对。这是“多值”映射的标准实现方法。

所以,如果键是一个Character对象,值是Boolean,你可以这样做

Map<Character, List<Boolean>> multimap = new HashMap<Character, List<Boolean>>();
Run Code Online (Sandbox Code Playgroud)

每次您想向地图中的现有 KV 对添加新值时,只需调用

multimap.get(key).add(value);
Run Code Online (Sandbox Code Playgroud)

其中key是字符value及其对应的Boolean值。

Guava库由Google(免费下载)具有以各种方式实现的Multimap 接口,因此基本上您可以实例化MultiMap<Character, Boolean>地图并相应地使用它。同样,您可以获取Apache Commons Collections库并使用其MultiValueMap类。您可能还想查看类似 StackOverflow 问题其他问题的答案。

如果您只想为每个键存储每个值中的一个,Set则应使用a代替List.