7

在我的java代码中,我尝试建立一个arraylist列表,我的代码如下,

private ArrayList<Integer>[] listoflist;
listoflist = (ArrayList<Integer>[]) new Object[875715];

但是,当我编译代码时,编译器一直说

[Ljava.lang.Object; 不能转换为 [Ljava.util.ArrayList;

我可以问为什么我不能将 Object[] 转换为 ArrayList[] 吗?

4

4 回答 4

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<>();(它从你分配给它的变量中推断出类型)。

于 2013-03-09T20:09:19.933 回答
4

Java 是一种强类型语言- 因此您不能简单地将一种类型转换为另一种类型。但是,您可以转换它们。

在简单使用的情况Object[]List

Object[] arr = new Object[]{...};
List<Object> list = Arrays.asList(arr);

如果您想将其用作ArrayList,例如,如果您想添加一些其他元素,只需再次包装它

 ArrayList<Object> arrList = new ArrayList<Object>(Arrays.asList(arr));
于 2013-03-09T19:15:38.400 回答
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);
            }
        }
    }
}

请注意,您可以在新的 ArrayList<> 之后将 <> 留空。Java 将推断类型(无论如何嵌套),因为我相信 java 7。我只是在示例中将它们写下来,以显示您在每个级别处理的类型,以使示例更加清晰。您仍然可以将它们写下来以使您的代码更具可读性。

于 2016-10-11T18:30:43.690 回答
-2

像下面这样在单行中定义它,编译器不会抱怨

private ArrayList[] listoflist = (ArrayList<Integer>[]) new Object[10];
于 2013-03-09T19:27:35.103 回答