簡體   English   中英

[Ljava.lang.Object; 無法轉換為[Ljava.util.ArrayList;

[英][Ljava.lang.Object; cannot be cast to [Ljava.util.ArrayList;

在我的java代碼中,我嘗試構建一個arraylist列表,我的代碼如下,

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

但是,當我編譯代碼時,編譯器一直這么說

[Ljava.lang.Object; 無法轉換為[Ljava.util.ArrayList;

我可以問為什么我不能將Object []轉換為ArrayList []?

Java是一種強類型語言 - 因此您不能簡單地將一種類型轉換為另一種類型。 但是你可以轉換它們。

Object[] to List情況下,只需使用

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

如果你想將它用作ArrayList ,例如,如果你想添加一些其他元素,只需再次包裝它

 ArrayList<Object> arrList = new ArrayList<Object>(Arrays.asList(arr));

你說你正在嘗試構建一個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<>(); (它從您分配給它的變量中推斷出類型)。

您可以通過將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我相信。 我只是在示例中將它們寫下來,以顯示您在每個級別處理的類型,以使示例更清晰。 您仍然可以將它們寫下來以使代碼更具可讀性。

如下所示在單行中定義它,編譯器不會抱怨

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM