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
。因此您收到一条错误,说明您违反了类型系统。您不能将香蕉放入装有猫的集合中。
相反,将
ArrayList
定义为包含数组:
ArrayList < int[] > list = new ArrayList < int[] > ( );
请注意,您无需在 EQUALS 符号右侧重复参数化类型。在现代 Java 中,编译器可以通过查看 EQUALS 的左侧来推断类型。
ArrayList < int[] > list = new ArrayList <> ( );
此外,通常最好使用提供您所需功能的最高超类或超级接口。因此,您可以将您的
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]