![](/img/trans.png)
[英]JAVA ERROR: Ljava.lang.Object; cannot be cast to [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.