在我的java代码中,我尝试构建一个arraylist列表,我的代码如下,
private ArrayList<Integer>[] listoflist;
listoflist = (ArrayList<Integer>[]) new Object[875715];
但是,当我编译代码时,编译器会一直说
[Ljava.lang.Object;无法转换为[Ljava.util.ArrayList;
我可以问为什么我不能将Object []转换为ArrayList []?
答案 0 :(得分:4)
Java是strong typed language - 因此您不能简单地将一种类型转换为另一种类型。 但是你可以转换它们。
如果Object[]
到List
,只需使用
Object[] arr = new Object[]{...};
List<Object> list = Arrays.asList(arr);
如果您想将其用作ArrayList
,例如如果你想添加一些其他元素,只需再次包装
ArrayList<Object> arrList = new ArrayList<Object>(Arrays.asList(arr));
答案 1 :(得分:4)
你说你正在尝试构建一个ArrayLists列表。但是......你正在尝试使用数组来做到这一点......为什么不使用另一个ArrayList?这实际上非常简单:
private List<List<Integer>> listoflist = new ArrayList<ArrayList<Integer>>();
以下是使用它的示例:
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1.add(Integer.valueOf(3));
list1.add(Integer.valueOf(4));
ArrayList<Integer> list2 = new ArrayList<Integer>();
list2.add(Integer.valueOf(6));
list2.add(Integer.valueOf(7));
listoflist.add(list1);
listoflist.add(list2);
多次说ArrayList<ArrayList<Integer>>
有点奇怪,所以在Java 7中,构造可以只是new ArrayList<>();
(它从你分配给它的变量中推断出类型)。
答案 2 :(得分:1)
您可以通过将ArrayLists放入ArrayLists来制作n维ArrayList,就像n维数组一样。
这里有一个3维示例来说明这个概念
public static void main(String args[]){
ArrayList<ArrayList<ArrayList<Integer>>> listOfListOfList = new ArrayList<ArrayList<ArrayList<Integer>>>();
int firstDimensionSize = 3;
int secondDimensionSize = 4;
int thirdDimensionSize = 5;
for (int i = 0; i < firstDimensionSize; i++) {
listOfListOfList.add(new ArrayList<ArrayList<Integer>>(vertices));
for (int j = 0; j < secondDimensionSize; j++) {
listOfListOfList.get(i).add(new ArrayList<Integer>());
for(int k = 0; k < thirdDimensionSize; k++) {
listOfListOfList.get(i).get(j).add(k);
}
}
}
}
请注意,您可以保留&lt;&gt;在新的ArrayList&lt;&gt;之后清空。 Java将推断出类型(无论嵌套方式如何),因为java 7我相信。我只是在示例中将它们写下来,以显示您在每个级别处理的类型,以使示例更清晰。您仍然可以将它们写下来以使代码更具可读性。
答案 3 :(得分:-2)
如下所示在单行中定义,编译器不会抱怨
private ArrayList[] listoflist = (ArrayList<Integer>[]) new Object[10];