在Java中的Arraylists集

时间:2017-01-09 04:57:23

标签: java arraylist set

    Set<ArrayList<Integer>> hs = new HashSet<ArrayList<Integer>>();

    ArrayList<Integer> arr = new ArrayList<Integer>();

    arr.add(1);
    arr.add(2);
    arr.add(3);
    arr.add(4);

    hs.add(arr);

    ArrayList<Integer> arr1 = new ArrayList<Integer>();

    arr1.add(4);
    arr1.add(3);
    arr1.add(2);
    arr1.add(1);

    hs.add(arr1);

    System.out.println(hs.size());

我得到的输出是2.我想得到1,因为两个arrayLists都有相同的元素。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:3)

在第二个块中,创建arr1后,将数字1到3添加到arr 再次。显然,包含8个元素的ArrayList不等于空ArrayList,因此HashSet中有两个成员。如果您修改代码以将相同的元素添加到arr1,则会获得大小为1的HashSet

答案 1 :(得分:0)

在您粘贴的代码中,您将1,2,3和4添加到第一个列表(arr)两次,并且不向第二个列表添加任何内容(arr1)。因此arr1.equals(arr)将是错误的。

修复代码中的拼写错误,以便arr1包含与arr相同的元素,您将实现目标。

答案 2 :(得分:-3)

即使内容相同,两个arraylists也是不同的对象。您必定会在集合中看到2个元素。

就像有两个名字完全相同的员工一样。

不确定是否可以为arraylists实现equals方法。