ハッシュマップ文字列と文字列のリストを比較しますか?

List a = new ArrayList();
a.add("one");
a.add("two");
a.add("one");
Map> map = new HashMap();
map.put(1,list1);
map.put(1,list2);

リスト1とリスト2を比較するにはどうすればよいですか?

ベストアンサー

これは例です(建設が意味をなされるように地図を修正しました)

@Test
public void testListCompare(){
    List a = new ArrayList();
    a.add("one");
    a.add("two");
    a.add("one");
    List list1 = new ArrayList();
    list1.add("one");
    list1.add("two");
    list1.add("one");
    List list2 = new ArrayList();
    list2.add("two");
    list2.add("one");
    list2.add("one");
    Map> map = new HashMap();
    map.put(1,list1);
    map.put(2,list2);

    for(Map.Entry> entry: map.entrySet()){
        System.out.println(a.equals(entry.getValue()));
    }
}

ArrayList を使用しているので、リストを適切に比較するために
equals()メソッドがオーバーライドされた AbstractList
が拡張されます。

それ以外の場合、独自の List を実装すると、次のようなことができます:

public boolean ifListsAreEqual(List base, List candidate){
    if(base.size() != candidate.size()){
        return false;
    }
    for(int i = 0; i < base.size(); i++){
        if(!base.get(i).equals(candidate.get(i))){
            return false;
        }
    }
    return true;
}     

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です