首页 > 解决方案 > 在Hashmap中搜索字符串数组的有效方法

问题描述

我有以下带有字符串数组的哈希图:

public static HashMap<String, String[]> map = new HashMap<String, String[]>();
map.put("calculus",new String[] {"math","logic"});
map.put("chemisty",new String[] {"ions","electrons"});
map.put("biology",new String[] {"life","bacteria"});

我有一个字符串,我想在 Hashmap 的字符串数组中搜索它。我的代码是:

public String findFn(String myString) {

    for (Map.Entry<String, String[]> entry : map.entrySet()) {

        String key = entry.getKey();

        for(String s : entry.getValue()) {
            if(s.contains(myString)) {
                return key;
            }
        }
    }
    return null;    
}

这将有效地遍历整个 hashmap 值,直到找到匹配项。有没有更好的方法来做到这一点?

标签: javaarrayshashmap

解决方案


使用您当前的数据结构,这是您能做的最好的事情。如果您需要经常这样做,您应该构建另一个具有反向关系的 Hashmap,其中“主题”是键,“课程”是值。


推荐阅读