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

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;
}
-1
Gruss 12 Апр 2019 в 17:44

2 ответа

Лучший ответ
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;
}

Строка вместо Integer. И лучший стиль - позволить переменной уже быть списком.

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

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

0
Joop Eggen 12 Апр 2019 в 14:50

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

1
MTL-VRN 12 Апр 2019 в 14:47