我正在尝试使用一定范围内的固定大小的随机数组生成一个列表。问题是,当我想查看列表中是否已经有一个数组(list.contains(array))时,它没有返回良好的布尔变量。这是这段代码的样子,我不知道问题出在哪里:
List<int[]> list = new ArrayList<int[]>();
int[] v = new int[n];
int n = 2, val_max = 3;
while (list.size() != max) {
v = getRandomArray(n, 1, val_max);
if (list.contains(v) == false)
list.add(v);
}
我希望其输出为{ {1, 2} {2, 1} {1, 3} {3, 1} {2, 3} {3, 2} }
,但输出会不断变化……它总是使上述值中的一或两个加倍,这使我认为问题一定来自于contains函数。
答案 0 :(得分:1)
List.contains
使用Object.equals
检查是否相等,但是数组使用引用相等,而不是内容相等。因此.contains
将始终返回false。
不幸的是,对于特定的数组,实际上只有两个选择:
contains
自己重写Arrays.equals
的逻辑。