当前位置: 代码迷 >> J2SE >> java创建对象数组解决办法
  详细解决方案

java创建对象数组解决办法

热度:282   发布时间:2016-04-24 12:34:08.0
java创建对象数组
我想生成一个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]   */
  相关解决方案