我有一个名为 Arraycells
的长数组 List
:
List<long[]> Arraycells = new ArrayList<>() ;
Arraycells.add(new long[]{1L, 0L});
Arraycells.add(new long[]{1L, 1L});
Arraycells.add(new long[]{1L, 2L});
我想看看这个列表中是否包含一个长数组对象:
for (long r = 0L; r < 3; r++) {
for (long c = 0L; c < 3; c++) {
if (Arraycells.contains(new long[]{r, c})) { // problem is with this statement
// do something
}
}
}
如何检查 Arraycells?
最佳答案
您可能想使用 List<Long>
尝试另一种变体而不是 long[]
:
List<List<Long>> cells = new ArrayList<>();
cells.add(Arrays.asList(1L, 0L));
cells.add(Arrays.asList(1L, 1L));
cells.add(Arrays.asList(1L, 2L));
for (long i = 0L; i < 3; i++) {
for (long j = 0L; j < 3; j++) {
if (cells.contains(Arrays.asList(i, j))) {
System.out.println("Contains: " + i + ", " + j);
}
}
}
另请注意,您示例中的代码检查引用相等性,因为数组继承 equals
来自 Object
.另一方面,List.equals(...)
实现检查列表是否包含相同的元素和相同的顺序。
关于java - 检查 java 集合列表中包含的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48085349/