如何在HashMap中成功比较两个字符串?

时间:2016-05-17 08:24:52

标签: java hashmap

我已经为我的项目成功实现了HashMap,现在我被困在这里..

这是我的HashMap ...它将提取SQL数据,它将被放入The Hashmap ...

private Map<String, String> list = new HashMap<String, String>();
sql.... extract data ....
while (...) { 
    list.put(string1, string2);
}

所以......现在我有两个字符串......

a = mike;
b = james;

因为它是一个同步的hashmap ..我想知道我该怎么做..

if (list.containsKey=a+b)? or if (list.containsValue=a+b)?
if (list.containsKey(a) && list.containsValue(b)) {
     do....
} else {
     do nth...
}

我试图比较两个值,我需要两个匹配并相互链接..我尝试玩它但似乎当它匹配一个..它做了一些事情..它只需要匹配一个...

但是我希望在列表中找到mike和james,然后它运行......某些东西......我打印出列表的结果,它显示了mike = james。

我如何做到这一点,以确定mike = james然后......存在.. else ..在列表中不存在..

2 个答案:

答案 0 :(得分:2)

HashMap(或任何其他Map)不仅仅是2个列表,还是“对”列表,它是来自1个元素的映射()到另一个()。

您选择的地图名称(“列表”)表明您正在考虑它,就好像它只是一个列表,这会导致您走错路。

您想查看字符串 a (“mike”)是否映射到 b (“james”)。

要求在地图中查找 a 并针对 b 测试结果。

你想要像

这样的东西
String m = map.get(a)
if( m != null && m.equals(b) ) {
    // ...
} else {
    // ...
}

答案 1 :(得分:2)

真的很难理解你的意思。如果您正在搜索元组,则下面的内容将起作用:

public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();

    map.put("mike", "james");

    printTupleIfFound(map, "mike", "james");
}

private static void printTupleIfFound(Map<String, String> map, String fst, String snd) {
    for (Entry<String, String> entry : map.entrySet()) {
        if (entry.getKey().equals(fst) && entry.getValue().equals(snd)) {
            System.out.println(fst + "," + snd + " is in the map");
        } else {
            System.out.println(fst + "," + snd + " is NOT in the map");
        }
    }

}