java创建对象数组

ihrthk
博客专家认证
2011-09-24 01:49:47
我想生成一个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];
}
均无无效,求解!
...全文
460 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
leisore 2011-09-24
  • 打赏
  • 举报
回复

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]
*/


都可以的
打油的程序员 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 ihrthk 的回复:]
我想生成一个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<Intege……
[/Quote]

目前java不能创建泛型数组
ETCentury 2011-09-24
  • 打赏
  • 举报
回复
定义的时候就要设定一个大小的
zs312979674 2011-09-24
  • 打赏
  • 举报
回复
这是我的博文 地址:http://blog.csdn.net/zs312979674/article/details/6816375 

大家互相学习学习下子
huntor 2011-09-24
  • 打赏
  • 举报
回复
想在6下编译,把泛型去掉。
ihrthk 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huntor 的回复:]
Java code

import java.util.ArrayList;
public class ArrayExample {
public static void main(final String[] args) {
ArrayList<Integer>[][] array = new ArrayList<>[5][];
for (in……
[/Quote]
如果只有前面<>的加Integer,也会报错.
Type mismatch: cannot convert from ArrayList<?>[][] to ArrayList<Integer>[][]
Syntax error on token "<", ? expected after this token
Type mismatch: cannot convert from ArrayList<?>[] to ArrayList<Integer>[]
Syntax error on token "<", ? expected after this token
TKD03072010 2011-09-24
  • 打赏
  • 举报
回复
学习学习
huntor 2011-09-24
  • 打赏
  • 举报
回复
如果两个<>里面也加上Integer。就会出现编译错误。
$ javac -Xlint ArrayExample.java 
ArrayExample.java:5: 错误: 创建泛型数组
ArrayList<Integer>[][] array = new ArrayList<Integer>[5][];
^
ArrayExample.java:7: 错误: 创建泛型数组
array[i] = new ArrayList<Integer>[5];
^
2 个错误
huntor 2011-09-24
  • 打赏
  • 举报
回复

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 个警告
打油的程序员 2011-09-24
  • 打赏
  • 举报
回复


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]
*/



fainfy 2011-09-24
  • 打赏
  • 举报
回复

List<Integer[][]> list = new ArrayList<Integer[][]>();
Integer[][] in = new Integer[4][4];
in[0][0]=1;
list.add(in);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧