搜索指定的键和值是否存在

nav*_*lp3 1 java hashmap

我在java中使用hashmap datastructure.我有一些数据,其中每个条目(值)都有一个组(键).现在我将这些数据存储在hashmap中,如下所示

HashMap<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "value1");
map.put(1, "value2");
map.put(2, "value3");
map.put(2, "value4");
map.put(3, "value5");
map.put(3, "value6");
map.put(3, "value7");
Run Code Online (Sandbox Code Playgroud)

现在我想搜索条目中是否存在条目(键= 3和值="value6")或不存在.有没有具体的方法可以打电话?或者是否有其他方法可以做到这一点?

Sub*_*der 8

您不能在地图中针对相同的密钥保留多个条目.如果您的地图以前包含该键的映射,则替换旧值.你需要

Map<Integer,List<String>> map = new HashMap<>();
                                          ^^^^^
                                     (Diamond operator)
Run Code Online (Sandbox Code Playgroud)

在哪里可以保存相同键的字符串列表.你可以得到价值map#get

List<String> str = map.get(3);
Run Code Online (Sandbox Code Playgroud)


ajd*_*uke 5

您可以使用Guava MultimapAPI 文档

它针对一个键存储多个值。对于你的情况,

Multimap<Integer,String> myMultimap = ArrayListMultimap.create();
myMultimap .put(1, "value1");
myMultimap .put(1, "value2");
myMultimap .put(2, "value3");
myMultimap .put(2, "value4");
myMultimap .put(3, "value5");
myMultimap .put(3, "value6");
myMultimap .put(3, "value7");
Run Code Online (Sandbox Code Playgroud)

这将为您创建数据结构

现在我想搜索条目(key=3 和 value="value6")是否存在于地图中。有什么具体的调用方法吗?或者有没有其他方法可以做到?

对于搜索使用multimap#containsEntry(key,value),它boolean根据结果返回结果

所以,

myMultimap.containsEntry(3,"value6")
Run Code Online (Sandbox Code Playgroud)

这将返回 true