java - Java中将int[]矩阵添加到ArrayList中,但出现错误

标签 java arraylist

    ArrayList<ArrayList<Integer>> al= new ArrayList<ArrayList<Integer>>();
    int[][] mat= new int[row][col];
    for(int i=0;i<row;i++)
    {
        for(int j=0;j<col;j++)
        {
            mat[i][j]=s.nextInt();
        }
    }
    for(int i=0;i<row;i++)
    {
        al.add(mat[i]);
    }

int[] 无法转换为 ArrayList al.add(mat[i]);

最佳答案

ArrayList不是数组

您定义 ArrayList 其中包含 ArrayList对象。但是您正在尝试放入 int 的数组原始值。数组不是 ArrayList 。因此您收到一条错误,说明您违反了类型系统。您不能将香蕉放入装有猫的集合中。

定义数组列表:List < int[] >

相反,定义您的 ArrayList包含一个数组:

ArrayList < int[] > list = new ArrayList < int[] > ( );

请注意,您无需在 EQUALS 符号右侧重复参数化类型。在现代 Java 中,编译器可以通过查看 EQUALS 的左侧来推断类型。

ArrayList < int[] > list = new ArrayList <> ( );

此外,通常最好使用提供您所需功能的最高父类(super class)或超接口(interface)。所以你可以引用你的ArrayList作为 List 。在 Java 21+ 中,您可以使用 SequencedCollection (JEP 431)。

List < int[] > list = new ArrayList < int[] > ( );

完整示例代码:

// Prepare.
List < int[] > list = new ArrayList <> ( );
int rows = 3, cols = 3, counter = 1;
int[][] mat = new int[ rows ][ cols ];

// Populate array.
for ( int i = 0 ; i < rows ; i ++ )
{
    for ( int j = 0 ; j < cols ; j ++ )
    {
        mat[ i ][ j ] = counter ++ ;
    }
}

// Populate ArrayList.
for ( int index = 0 ; index < rows ; index ++ )
{
    list.add ( mat[ index ] );
}

// Report.
list.forEach ( ints -> System.out.println ( Arrays.toString ( ints ) ) );

运行时:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

关于java - Java中将int[]矩阵添加到ArrayList中,但出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77725221/

相关文章:

java - Shell 参数未正确传递给 Java 类

java - ArrayList如何添加Integer属性 - 逻辑问题

java - ArrayList of Integers 的 ArrayList 不应接受重复项

java - 有没有更快的方法从 Sqlite 查询中遍历行?

java - 安卓 : Calculate sum and group by month (SQLite)

java - Parse.com 安卓 : Number of ParseObjects I can pin to the Local Datastore?

java - 获取 ArrayList 中的 ArrayList 值 - Java

java - 数组列表和 Jframe

java - 从 ArrayList 中删除子列表

java - 将 MouseAdapter 列表的所有元素添加到 JComponent