如何控制Arraylists的价值观

M.M*_*M.M -1 java

我们如何比较两个数组列表的值,例如:

    ArrayList a = new ArrayList<String>();
    a.add("1");
    a.add("2");
    a.add("3");

    ArrayList b = new ArrayList<String>();
    b.add("3");
    b.add("2");
    b.add("1");
    System.out.println(areEqual(a, b));
Run Code Online (Sandbox Code Playgroud)

应该打印为true,因为a的所有值都在b中.

提前致谢

Jon*_*on7 10

列表界面包含此功能boolean containsAll(Collection<?> c),似乎可以执行您想要的操作. http://download.oracle.com/javase/6/docs/api/java/util/List.html#containsAll(java.util.Collection)


Kal*_*Kal 8

if ( a.containsAll(b) && (a.size() == b.size() ) )
Run Code Online (Sandbox Code Playgroud)

编辑:如果a包含的元素多于b,则containsAll仍将返回true,因此如果要测试绝对相等,则需要进行大小比较.

编辑#2:这假设a和b包含唯一条目.如果有像@Robin和@Matti所提到的重复,那么根据OP的相等定义,它会复杂得多.