ArrayList <int []>包含值</int []>

时间:2014-02-22 16:41:37

标签: java

如果我有ArrayList<int[]>示例,并且我想检查{2,4}是否在其中,我将如何执行此操作?

exaple.contains({2,4}); //doesn't work

exaple.contains(2,4); //doesn't work either

代码有什么问题?

4 个答案:

答案 0 :(得分:11)

数组不会覆盖Object.equals()方法(ArrayList.contains()用来比较对象)。所以数组只等于它自己。您必须遍历列表并使用Arrays.equals()将每个元素与数组进行比较。

但我怀疑,你不应该有List<int[]>,而是List<Coordinate>。然后,坐标类可以覆盖equals()hashCode(),您就可以使用

example.contains(new Coordinate(2, 4))

您也可以使用List<List<Integer>>,但如果我怀疑是真的(即您使用数组来保存应该在课堂上的两个坐标),那么请使用自定义的Coordinate类。

答案 1 :(得分:0)

即使你做得恰当,即:

int[] vals = {2, 4};

exaple.contains(vals);

您不会返回true,因为contains方法将使用equals方法。除非您已覆盖equals方法,否则这将始终解析为false,除非您传入完全相同的数组

答案 2 :(得分:0)

你可能想看看这个。请发一些你的代码。

i need to find a integer data in arraylist?

答案 3 :(得分:0)

contains()方法检查,如果ArrayList包含特定对象,则它不关心对象内的值。换句话说,如果您实例化两个{2,4}数组,它将是两个不同的对象,contains()方法将在它们之间区分。

您需要做的是覆盖contains()方法以查看数组的内容,而不是仅查看引用,或者您可以删除完全使用contains()方法并手动检查。