проверка массива в 2D-массиве с помощью IntStream - PullRequest
4 голосов
/ 06 апреля 2019

Я хочу проверить, существует ли набор координат (coor) в массиве координат (coorArray).В других постах я видел, как объединить 2D-массив, чтобы его можно было найти в IntStream для одиночного int, но я не уверен, как это перевести к моей проблеме.Спасибо за помощь!

пример массивов:

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

Ответы [ 2 ]

3 голосов
/ 06 апреля 2019

Yoy может использовать 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 голос
/ 06 апреля 2019

Вот еще один пример без лямбда-выражений, если хотите;).Состоит из простого для каждого и проверки по координате.

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, но это должно удовлетворять требованию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...