public class XXXX{
private List<Integer>[] a;
public XXXX(int num)
{
a = new ....?
}
}
我应该如何新建 a ?
答案 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>;