java - 如何将字符串与字符串数组进行比较以从映射中获取值?

标签 java bimap

我有一个 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/

相关文章:

java - 如何调试 ContextLoader - 上下文初始化失败和 BeanCreationException

java - 打印语句中的条件不打印其余部分。 java

c++11 - 可变参数类型定义,或 "Bimaps done the C++0x way"

android - Guava :java.lang.NoClassDefFoundError - com.google.common.collect.HashBiMap

c++ - Cpp - 检查 key 是否存在于 boost bimap 中

java - 嵌入式系统中的一个客户端 - 多个服务器

java - 对集合进行排序并将内容分配给java中的列表

java - java 布局的问题

java - Guava HashBiMap 的 containsValue 的大 O

Java:实例化 Google Collection 的 HashBiMap