我想生成一个ArrayList<Integer>类的二维数组;
如:ArrayList<Integer> a[5][5];
以下两种方法都有问题:
第一种:
int i,j;
ArrayList<Integer> a[][];
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=new ArrayList<Integer>();
}
}
第二种:
int i;
ArrayList<Integer> a[][];
a=new ArrayList[5][];
for(i=0;i<5;i++){
a[i]=new ArrayList[5];
}
均无无效,求解!
------解决方案--------------------
- Java code
import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Arrays;import java.util.List;//目前Java不支持泛型数组。底层的数组类型只能是object的.可以通过java反射来模拟实现class GenericArray<T> { private T[] oneDimensionArray; T[][] twoDimensionArray; public GenericArray(Class<T> type, int size) { oneDimensionArray = (T[]) Array.newInstance(type, size); } public GenericArray(Class<T> type, int rows , int cols){ twoDimensionArray = (T[][]) Array.newInstance( type, rows, cols); } public void put(int index, T item) { oneDimensionArray[index] = item; } public void put(int rows , int cols, T item) { twoDimensionArray[rows][cols] = item; } public T get(int index) { return oneDimensionArray[index]; } public T get(int rows , int cols) { return twoDimensionArray[rows][cols]; } }public class TestGenericArray{ public static void main(String[] args) { System.out.println("\n---测试一维“泛型数组”---"); GenericArray<List> oneDimension = new GenericArray<List>( List.class, 3); for(int i=0; i<3; i++){ oneDimension.put(i,new ArrayList<Integer>(Arrays.asList(i))); } for(int i=0; i<3; i++){ System.out.print(oneDimension.get(i) + " "); } System.out.println("\n---测试二维“泛型数组”---"); GenericArray<List> twoDimension = new GenericArray<List>( List.class, 3, 3); for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ twoDimension.put(i,j,new ArrayList<Integer>(Arrays.asList(i, j))); } } for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ System.out.print(twoDimension.get(i,j) + " "); } System.out.println(); } }}/*---测试一维“泛型数组”---[0] [1] [2] ---测试二维“泛型数组”---[0, 0] [0, 1] [0, 2] [1, 0] [1, 1] [1, 2] [2, 0] [2, 1] [2, 2] */