检查两个arraylist对象是否匹配

时间:2014-03-04 14:01:45

标签: java

无论元素的顺序及其出现次数如何,我如何检查arraylist的对象是否与另一个对象匹配。让我们说我有:

obj1   contains    "boy",  "girl",  "kid"
obj2   contains     "girl",   "kid",  "boy", "girl"
obj3   contains     "woman",  "boy",  "girl",   "kid"

所有的arraylist

我希望程序实现这一目标:

obj1    =     obj2   true
obj1    =     obj3   false
obj2    =     obj3   false

3 个答案:

答案 0 :(得分:3)

我认为你的意思是以下内容。您想要检查列表中包含的唯一元素是否相同。订单无关紧要。

要解决此问题,您需要设置仅包含唯一元素且不保留顺序:

List<String> first = ....
List<String> second = ....

boolean result = new HashSet<>(first).equals(new HashSet<>(second));

答案 1 :(得分:1)

您应该使用containsAll()方法:

    List a = Arrays.asList("boy", "girl", "kid");
    List b = Arrays.asList("girl", "kid", "boy", "girl");
    List c = Arrays.asList("woman", "boy", "girl", "kid");

    System.out.println(a.containsAll(b));     // true
    System.out.println(a.containsAll(c));     // false
    System.out.println(b.containsAll(c));     // false

答案 2 :(得分:0)

为了让您入门,请阅读List .contains方法。在带有布尔标志的嵌套循环中使用它,以指示一个列表项是否满足其他列表中任何项的.equals。

您还需要确定比较是否应该是双向的。您可能有一个场景,obj2中存在obj1的所有项目,但obj1中不存在obj2的所有项目。换句话说,obj2是obj1的超集。