我想检查给定数组(int []的值是否为)包含特定的int []。
我已经尝试过了。
private static final int[][] neighbours = {
{-1, 0}, {-1, +1},
{0, -1}, {0, +1},
{+1, -1}, {+1, 0}};
List<int[]> drawAt = new ArrayList<>();
for (int[] tilePos : imageCoordMap.values()) {
for (int[] neighbour : neighbours) {
int[] wtf = {tilePos[0] + neighbour[0], tilePos[1] + neighbour[1]};
if (imageCoordMap.containsValue(wtf)) {
drawAt.add(wtf);
}
}
}
imageCoordMap地图的值包含数组形式的坐标x和y。
我的代码的问题是由于某种原因,imageCoordMap.containsValue(wtf)总是返回true,即使它不应该,我也无法找出原因。我已经尝试过调试但没有成功
答案 0 :(得分:1)
我认为最简单的方法是自己编写contains方法:
static boolean contains(int[][] array, int[] value) {
for (int[] element : array) {
if (Arrays.equals(element, value))
return true;
}
return false;
}
不要担心它不会效率低下。 Java包含和equals方法也循环。你只是没有看到它。