比较&提取两个Hashmap

时间:2014-05-15 13:18:33

标签: java hashmap

我使用Scanner读取A.txt以生成A Hashmap, 也可以通过B.txt读取B Hashmap的方法相同。 这两个hashmap有" SOME"相同的钥匙,并希望相互结合。 如果密钥相同,则打印出" key,value1,value2"。 到目前为止我在这里:

public static void main (String[] args) throws FileNotFoundException {
Scanner scanner1 = new Scanner(new File("score.txt"));
Map<String, String> tolerance = new HashMap<>();
Scanner scanner2 = new Scanner(new File("Count2.txt"));
Map<String, String> Pdegree = new HashMap<>();
while (scanner1.hasNextLine()) {
String line = scanner1.nextLine();
String[] array = line.split("\t",2);
String Name = array[0];
String score = array[1];
tolerance.put(Name,score);
}
while (scanner2.hasNextLine()) {
    String line2 = scanner2.nextLine();
    String[] array2 = line2.split("\t",2);
    String Name2 = array2[0];
    String degree = array2[1];
    Pdegree.put(Name2,degree);
    }
    for(Map.Entry<String, String> entry : tolerance.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
            for(Map.Entry<String, String> entry2 : Pdegree.entrySet()) {
            String key2 = entry2.getKey();
            String value2 = entry2.getValue();
            if(key==key2){
            System.out.println(key2 + "\t" + value + "\t" + value2);
            }
    }
 }
}
}

既不会显示结果也不会显示错误消息。 我的问题是如何使用两个地图中的相应值提取相同的密钥。谢谢。

3 个答案:

答案 0 :(得分:1)

我自己找到了答案。它应该是

 if(key.equals(key2))

答案 1 :(得分:0)

您可以使用map1.putAll(map2)组合两张地图;

答案 2 :(得分:0)

为什么不使用Guava的多图?我相信如果你使用put all它会遇到两个相同的键,它只是为键增加了第二个值。然后你可以打印出所有的键值对。如果它具有相同的密钥和相同的值,那么它依赖于实现。

https://guava-libraries.googlecode.com/svn/tags/release03/javadoc/com/google/common/collect/Multimap.html#put(K,V)