如何在java </integer>中新建一个List <integer> []

时间:2013-03-26 11:59:15

标签: java

public class XXXX{
    private List<Integer>[] a;
    public XXXX(int num)
    {
        a = new ....?
    } 
}

我应该如何新建 a

6 个答案:

答案 0 :(得分:4)

NPE:“数组和泛型不能很好地结合在一起”

转到列表列表

List<List<Integer>> a = new ArrayList<List<Integer>>();

或双数组

int[][] a = new int[5][5];

答案 1 :(得分:1)

这有效

int arraySize = 10;
List<Integer>[] a = (List<Integer>[]) new List[arraySize];

它创建一个可以包含整数列表

的数组(大小为10)

答案 2 :(得分:0)

a = (List<Integer>[]) new List[num];
for(int i = 0; i < num; i++)
    a[i] = new ArrayList<Integer>();

但是,为什么不将a声明为List<List<Integer>>

答案 3 :(得分:0)

您可以创建一个列表数组,但在初始化期间不能使用类型。

List<Integer>[] lists=new List[10];

//insertion
for(int i=0;i<10;i++){
    lists[i]=new ArrayList<Integer>();
    lists[i].add(i);
    lists[i].add(i+1);
}

//printing
for(List<Integer> list:lists){
    System.out.println(list.size());
}

为什么会这样?因为lists变量指向数据类型为List<Integer>的数组数据结构。此数组包含一组对List<Integer>类型的不同对象的引用,这就是为什么如果我们尝试运行lists[i]=new ArrayList<String>();它将无法编译。但是,当我们初始化数组本身时,我们不需要将List对象的类型作为List提供,因为从JVM的角度来看,List of Integer对象和List of Object对象将需要与logn相同的字节数。尺寸相同。当我们将数组成员设置为一个值(类型为List - 它必须是List<Integer>而不是其他任何东西)时,唯一的约束就出现了。

您可以将List[]输入到List<Integer>[],但最终结果和JVM行为是相同的。

答案 4 :(得分:0)

你可以做List<Integer> a=new ArrayList<Integer>(); 但是a不应该是通用的

答案 5 :(得分:-3)

List是java中的一个接口!

您可以将ArrayList,linket list,vector和stack等实例的引用提供给具有List数据类型的变量

所以你可以使用以下之一,

a = new ArrayList<Integer>();
a = new LinkedList<Integer>();
a = new Vector()<Integer>;
a = new Stack()<Integer>;