2013-03-26 44 views
-5
public class XXXX{ 
    private List<Integer>[] a; 
    public XXXX(int num) 
    { 
     a = new ....? 
    } 
} 

我應該如何在新一如何將新的列表<Integer> []在java中

+7

數組和仿製藥不順利起來。 – NPE 2013-03-26 12:00:24

+0

什麼是?它是一組列表 2013-03-26 12:00:33

+0

爲什麼你甚至需要這樣的構造? (除了面試或考試問題...) – ppeterka 2013-03-26 12:03:07

回答

0
a = (List<Integer>[]) new List[num]; 
for(int i = 0; i < num; i++) 
    a[i] = new ArrayList<Integer>(); 

真的不過,爲何不宣佈a作爲List<List<Integer>>

+0

@ppeterka:固定的 – Eric 2013-03-26 12:09:17

-3

列表是java中的一個接口!

你可以給喜歡的ArrayList,linket名單,矢量實例的引用和堆棧與列表數據類型的變量

,所以你可以使用下列之一,

a = new ArrayList<Integer>(); 
a = new LinkedList<Integer>(); 
a = new Vector()<Integer>; 
a = new Stack()<Integer>; 
+1

仔細看看這個問題。 'a'是列表的**數組**。Java不允許你創建一個參數化類型的數組。 – Jesper 2013-03-26 12:04:51

+0

是的,你是對的碧玉!我沒有敏銳地觀察! – 2013-03-26 12:06:51

+2

最後兩個語法是什麼? – ppeterka 2013-03-26 12:07:44

4

NPE:「陣列和仿製藥不要去的好起來」

圍棋的名單列表

List<List<Integer>> a = new ArrayList<List<Integer>>(); 

或雙陣列

int[][] a = new int[5][5]; 
1

這工作

int arraySize = 10; 
List<Integer>[] a = (List<Integer>[]) new List[arraySize]; 

它創造(的大小10)數組,可以包含整數

名單
+0

不要讀取最初的評論,因爲他們提到一個不正確的鏈接,人們問爲什麼爲什麼。這工作完美,簡單的問題和簡單的答案。我將我的四個列表分組在一起,一個數組是一個完美的選擇。好答案。 – xchiltonx 2013-10-05 14:44:23

0

您可以創建列表的數組,但你不能使用在創新過程中輸入。

List<Integer>[] lists=new List[10]; 

//insertion 
for(int i=0;i<10;i++){ 
    lists[i]=new ArrayList<Integer>(); 
    lists[i].add(i); 
    lists[i].add(i+1); 
} 

//printing 
for(List<Integer> list:lists){ 
    System.out.println(list.size()); 
} 

爲什麼這有效?因爲lists變量指向數據類型爲List<Integer>的數組數據結構。該數組包含一組對List<Integer>類型的不同對象的引用,這就是爲什麼如果我們嘗試運行lists[i]=new ArrayList<String>();它不會編譯。然而,當我們初始化數組本身時,我們不需要將List對象的類型設置爲List,因爲從JVM的角度來看,Integer對象列表和Object對象列表將需要與它們相同數量的logn字節大小相同。唯一的限制來當我們設置一個數組成員的值(類型爲List的 - 它必須是List<Integer>不是別的什麼)

您可以鍵入鑄List[]List<Integer>[]但最終的結果和JVM行爲是相同。

+1

爲什麼有人需要這個混亂? – 2013-03-26 12:32:04

+0

在生產級別java中,沒有人會要求這樣做(我們都是關於集合和集合的集合),但它是思考的好去處。 – 2013-03-26 12:37:45

+0

沒有人使用數組,除非他們'需要'使用基元。如果將它們保存在堆棧中,則java中的數組可能會很有用。 – 2013-03-26 12:39:46

0

你可以做List<Integer> a=new ArrayList<Integer>(); 但不應該是通用的

相關問題