62,614
社区成员
发帖
与我相关
我的任务
分享
public static void main(String[] args) {
@SuppressWarnings("unchecked")
// List<Integer>[][] listIntArray = new List[5][5];
List<Integer>[][] listIntArray = (List<Integer>[][]) Array.newInstance(
List.class, 5, 5);
for (int i = 0, ilen = listIntArray.length; i < ilen; i++) {
for (int j = 0, jlen = listIntArray[i].length; j < jlen; j++) {
listIntArray[i][j] = new ArrayList<Integer>(Arrays.asList(i, j));
}
}
for (int i = 0, ilen = listIntArray.length; i < ilen; i++) {
for (int j = 0, jlen = listIntArray[i].length; j < jlen; j++) {
System.out.print(listIntArray[i][j] + "\t");
}
System.out.println();
}
}
/**
[0, 0] [0, 1] [0, 2] [0, 3] [0, 4]
[1, 0] [1, 1] [1, 2] [1, 3] [1, 4]
[2, 0] [2, 1] [2, 2] [2, 3] [2, 4]
[3, 0] [3, 1] [3, 2] [3, 3] [3, 4]
[4, 0] [4, 1] [4, 2] [4, 3] [4, 4]
*/
$ javac -Xlint ArrayExample.java
ArrayExample.java:5: 错误: 创建泛型数组
ArrayList<Integer>[][] array = new ArrayList<Integer>[5][];
^
ArrayExample.java:7: 错误: 创建泛型数组
array[i] = new ArrayList<Integer>[5];
^
2 个错误
import java.util.ArrayList;
public class ArrayExample {
public static void main(final String[] args) {
ArrayList<Integer>[][] array = new ArrayList<>[5][];
for (int i = 0; i < 5; i++) {
array[i] = new ArrayList<>[5];
for (int j = 0; j < 5; j++) {
array[i][j] = new ArrayList<Integer>();
}
}
}
}
$ javac -version
javac 1.7.0
$ javac -Xlint ArrayExample.java
ArrayExample.java:5: 警告: [unchecked] 未经检查的转换
ArrayList<Integer>[][] array = new ArrayList<>[5][];
^
需要: ArrayList<Integer>[][]
找到: ArrayList[][]
ArrayExample.java:7: 警告: [unchecked] 未经检查的转换
array[i] = new ArrayList<>[5];
^
需要: ArrayList<Integer>[]
找到: ArrayList[]
2 个警告
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]
*/
List<Integer[][]> list = new ArrayList<Integer[][]>();
Integer[][] in = new Integer[4][4];
in[0][0]=1;
list.add(in);