使用IntStream检查2D数组中的数组

时间:2019-04-06 00:04:42

标签: java multidimensional-array java-stream

我正在检查一组坐标(coor)中是否存在一组坐标(coorArray)。我已经在其他文章中看到了如何连接2D数组,以便可以在IntStream中搜索它来寻找一个单独的int,但是我不确定如何将其转换为我的问题。谢谢您的帮助!

示例数组:

int[][] coorArray = {{1,2},{2,2},{3,0}};
int[] coor = {1,2};

2 个答案:

答案 0 :(得分:3)

您可以使用stream().anyMatch()进行此检查:

int[][] coorArray = {{1,2},{2,2},{3,0}};
int[] coor = {1,2};
boolean exist = Arrays.stream(coorArray).anyMatch(e -> Arrays.equals(e, coor));
System.out.println("exist = " + exist);  

输出:

  

exist = true


否则,当输入数组中不存在坐标时:

int[][] coorArray = {{4,2},{2,2},{3,0}};
int[] coor = {1,2};
boolean exist = Arrays.stream(coorArray).anyMatch(e -> Arrays.equals(e, coor));
System.out.println("exist = " + exist);

输出:

  

exist = false

答案 1 :(得分:1)

如果您愿意,这里是没有lambda表达式的另一个示例。由每个坐标和每个坐标检查组成。

public static boolean exists(int[][] coords, int[] coord){
    for(int[] c : coords){
        if(c[0] == coord[0] && c[1] == coord[1]) {
            return true;
        }
    }
    return false;
}

我不确定API中是否还有其他可用的功能,但是应该满足要求。