Java: превращение матрицы в список: мой метод добавления не работает, и я не знаю почему - PullRequest
0 голосов
/ 12 апреля 2019

Я получаю сообщение об ошибке, в котором говорится, что в моем методе добавления не найдено подходящего метода. Цель программы - собрать все значения матрицы в список, и я не могу заставить ее работать, потому что она продолжает выдавать ошибку в этой строке:

list.add(mat[i][j]);

Весь код выглядит так:

List<Integer> go(int[][] mat) 
{
    ArrayList<String> list = new ArrayList<String>();
    for (int i = 0; i < mat.length; i++) 
    {
        for (int j = 0; j < mat[i].length; j++) 
        {
            list.add(mat[i][j]);
        }
    }
    return list;
}

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Ваша функция возвращает List<Integer>, но ваш list объект объявлен как ArrayList<String>, к которому вы пытаетесь добавить mat[i][j]. Кроме того, mat[i][j] само по себе int, поэтому list должно быть ArrayList<Integer>.

0 голосов
/ 12 апреля 2019
List<Integer> go(int[][] mat) 
{
    int capacity = mat.length * mat[0].length; // Not needed.
    List<Integer> list = new ArrayList<>(capacity);
    for (int i = 0; i < mat.length; i++) 
    {
        for (int j = 0; j < mat[i].length; j++) 
        {
            list.add(mat[i][j]);
        }
    }
    return list;
}

Строка вместо целого числа.А лучше всего сделать так, чтобы переменная уже была списком.

Немедленное резервирование нужного количества записей в списке - это оптимизация: не нужно изменять размеры при добавлении значений и не резервировать слишком много места.

На самом деле линейный массив также может быть вариантом.

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