我有一个 BiMap,其中一个字符串作为键,一个字符串数组作为值。 现在我正在尝试使用单个字符串(它是值数组的一部分)获取 key 。
private static BiMap<String, String[]> map = ImmutableBiMap.<String, String[]>builder().build();
static {
map.put("000", new String[] {"CH", "CHE", "Switzerland"});
map.put("001", new String[] {"US", "USA", "United States of America"});
map.put("002", new String[] {"IT", "ITA", "Italy"});
}
在下一个方法中,我尝试使用“CH”搜索以获取“000”(这不起作用)。
private static String getKey(Map<String,String[]> map, String find) {
Map<String[], String> inversedMap = map.inverse();
if(inversedMap.containsKey() {
return inversedMap.get(find);
}
return null;
}
有没有办法像这样“找到” key ,如果没有的话,我需要使用这样的数组进行搜索: String[] find = new String[] {"CH", "CHE", "瑞士"};
所有值和键都是唯一的,因此预计只有一个结果。 我总是在数组中搜索第一个值,f.ex。 “CH”或“US”。
最佳答案
不,没有办法找到你想要的 key 。您必须更改存储数据的方式以支持所需的所有不同查找方法,或者一一浏览所有键(此时制作逆映射没有任何意义,您可以只浏览映射条目)。
一个简单的方法是专门构建一个包含多个 map 的类。
关于java - 如何将字符串与字符串数组进行比较以从映射中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57900636/