簡體   English   中英

為什么不能創建2D ArrayList?

[英]Why can't I create a 2D ArrayList?

我正在嘗試編寫以下代碼...

static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][]; 

這行不通。 如果我嘗試創建ArrayList<RssItem>的列表,我在做什么錯?

您不能創建通用類型的數組。 因此,您將需要使用演員表。

List<RssItem>[][] arr = (List<RssItem>[][]) new ArrayList<?>[2][2];

但是仍然可以實現List List ArrayList<ArrayList<Type>>

List<ArrayList<RssItem>> list = new  ArrayList<ArrayList<RssItem>>();
arr[0][0] = new ArrayList<Integer>();
arr[0][0].add(10);

您需要在RHS上給出尺寸:-

static List<RssItem>[][] arr = (List<RssItem>[][])new List<?>[4][];

column大小不是必需的,但是您也可以給它:-

static List<RssItem>[][] arr = (List<RssItem>[][])new List<?>[4][5];

注意 :-

您不能在RHS上將specific類型用作類型參數。 您將必須使用WildCard 只有在實例化數組中的list時才會給出特定類型。

要將某些內容添加到數組中,可以使用以下循環:-

未經測試

    List<RssItem>[][] arr = (List<RssItem>[][])new ArrayList<?>[4][4];

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            arr[i][j] = new ArrayList<RssItem>();

            arr[i][j].add(new RssItem());
        }
    }

    for (List<RssItem>[] val: arr) {
       for (List<RssItem> val2: val) {
           System.out.println(val2);
       }
    }

PS:-

請不要使用List的二維數組。 那相當於3-D陣列。 即使您獲得上述循環以某種方式工作。 將來會使您的代碼混亂。 和你的生活地獄。 您應該考慮Java中還有許多其他數據結構,例如Map ,在這種情況下很有用。

即使將List最多3個級別也是一個非常糟糕的主意。 因此,請更改您的設計。

數組列表的通用數組=數組列表的數組列表

那將是

ArrayList<ArrayList> list = new ArrayList<ArrayList>();

暫無
暫無

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

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