java数组作为map中的值

时间:2016-03-27 17:53:17

标签: java arrays javafx

我想检查给定数组(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,即使它不应该,我也无法找出原因。我已经尝试过调试但没有成功

1 个答案:

答案 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方法也循环。你只是没有看到它。