3

私がコードを持っているとしましょう

public static void main(String args[])
{
    Hashtable ht = new Hashtable();
    Hashtable ht2 = new Hashtable();
    for(int i=0;i<100;i++)
    {
        ht.put(i, new Integer (i));
    }
    for(int i=50;i<100;i++)
    {
        ht2.put(i, new Integer (i));
    }
}

2つの異なるハッシュテーブルを比較したい場合、Javaでこれを行うにはどうすればよいですか?編集:キーまたはハッシュテーブルの実際の値を比較したい場合

4

3 に答える 3

2

これにより、すべての一般的なキーと値のペアが出力されます。

public static void main(String args[])
{
    Map<Integer, Integer> ht = new HashMap<Integer, Integer>();
    Map<Integer, Integer> ht2 = new HashMap<Integer, Integer>();
    for(int i=0;i<100;i++)
    {
        ht.put(i, i);
    }
    for(int i=50;i<100;i++)
    {
        ht2.put(i, i);
    }

    System.out.println("The following keys and values match:");

    for (Map.Entry<Integer, Integer> htEntries : ht.entrySet()) {
        if(ht2.containsKey(htEntries.getKey()) && ht2.get(htEntries.getKey()).equals(htEntries.getValue())){
            System.out.println("\tKey: " + htEntries.getKey() + " Value: " + htEntries.getValue());
        }
    }
}
于 2012-04-12T16:42:45.967 に答える
1

それらに共通するキーと値の組み合わせを知りたい場合は、次のようなものを使用してください。

 HashSet<Entry<Integer, Integer>> entries = new HashSet<Entry<Integer, Integer>>(
   table1.entrySet());
 entries.retainAll(table2.entrySet());

両方のマップの同じキーとentries値を持つエントリのみが含まれます。

あるいは、参考までに、GuavaはMaps.difference、共通のエントリ、異なる値で同じキーを持つエントリ、および他のマップにないキーを持つエントリを一度に選択できるを提供します。

于 2012-04-12T16:39:37.333 に答える
0

2つのマッピングが同一であることを比較する場合は、を使用しますht.equals(ht2)

キーだけを比較するには、を使用しますht.keySet().equals(ht2.keySet())

値の比較は少し注意が必要で、要件によって異なります。あなたの要件は正確には何ですか?

PSHashtableは廃止されました。HashMap<Integer,Integer>ほとんどの状況で優先されるべきです。

于 2012-04-12T16:34:52.277 に答える