あなたはList.equals
を使用する必要があります。
public class HelloWorld{
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(1, 2);
boolean test = list1.equals(list2);
System.out.println("Similar " + test);
}
}
ので、List
からequals
は二つのリストがフルで、同じ大きさとその中と同じ位置に同じ値で等しいかどうかをチェックします。 HashSet
で行ったことは、あるリストが他のリストのサブセットであるかどうかだけをチェックします。しかし、list1
がlist2
のサブセットであり、list2
がサブセットlist1
である場合、それらは(数学的に)等しい。しかし、List.equals()
が高速で、2つのSets
を作成してサブセット操作を行う必要がありません。
しかし、{1,2,3}
は{1,2,3}
と等しくなくList.equals
の点で{1,3,2}
です。あなたが{1,2,3}
にしたい場合は、あなたはSets
でそれを行う{1,3,2}
へと{1,3,2,1,3}
に等しいこと:
public class HelloWorld{
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(1, 2);
Set<Integer> similar2 = new HashSet<Integer>(list2);
Set<Integer> similar1 = new HashSet<Integer>(list1);
boolean test = similar1.equals(similar2);
System.out.println("Similar " + test);
}
}
List.equals
その後、別の作品Set.equals
、similar1
内のすべての要素は、(反復によって)similar2
に存在する場合、それはチェックしているので、それはdoesnの注文について気にしない。 (これを指摘してくれてありがとう@ brso05)。
_return_はどういう意味ですか?これを 'boolean'の戻り値の型を持つメソッドに移動し、' return'を比較結果に対応する 'boolean'の値にしますか?あなたがそれをやり遂げるのを妨げるのは何ですか? –
また、注文、複製品などを検討していますか? –
たぶん、あなたが望む: 'System.out.println(" Similar "+ Similar.retainAll(list2));' – brso05