簡體   English   中英

Java ArrayLists

[英]Java ArrayLists

我正在嘗試運行用Java創建的程序,但是我不知道發生了什么,它給了我以下錯誤:

Exception in thread "main" java.lang.ClassCastException: 
java.lang.String cannot be cast to java.util.ArrayList

這是代碼:

 public static ArrayList connections(ArrayList list3) {

        ArrayList connections = new ArrayList();
        int row1 = 1;
        int row2 = 0;
        int col = 0;

        connections.add(new ArrayList());
        ((ArrayList)connections.get(0)).add(0);
        ((ArrayList)connections.get(0)).add(1);

        System.out.print(((ArrayList)connections.get(0)).get(0));

        while(row1 < list3.size()) {


            if(((ArrayList)list3.get(row1)).get(col).equals(((ArrayList)connections.get(row2)).get(col))){
                connections.add(((ArrayList)list3.get(row1)).get(1));
                row1++;
            }

            else {
                connections.add(new ArrayList());
                connections.add(((ArrayList)list3.get(row1)).get(0));
                row2 = row1;
                row1++; 
            }
        }

        return connections;
     }

錯誤似乎在if語句中。 有人可以幫我嗎?

if(((ArrayList)list3.get(row1)).get(col).equals(((ArrayList)connections.get(row2)).get(col))){

應該讀

if(((ArrayList)list3.get(row1)).get(col).equals(( ((ArrayList)connections).get(row2)).get(col))){

您正在轉換connections.get(row2),而不是首先轉換連接,然后在arraylist上進行獲取。

編輯-您絕對應該重構代碼以使用Java 1.5功能(即泛型)。 如果這不是一種選擇,則應重構代碼以使其更具可讀性-例如:您的方法稱為“ connections”,然后將變量稱為“ connections”

您還應該使用泛型而不是強制轉換。 這樣,如果這樣做,您將在編譯時收到錯誤,並且代碼將是類型安全的。 泛型僅向編譯器指定您要使用的類型,以便它可以在編譯時檢查類型。

例:

ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
list.add(new ArrayList<Integer>());

list.get(0).add(0);
list.get(0).add(1);
list.get(0).add(2);

有關泛型的更多信息

希望這可以幫助。

暫無
暫無

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

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