2014-12-05 63 views
-2

我創建了一個LinkedList,其中存儲了一個Employee對象。我需要編寫一個方法convertToArray,它將從LinkedList中獲得一個Employee的數組。將LinkedList轉換爲Arrary

任何想法?

+0

什麼努力,你做這麼遠嗎? – 2014-12-05 22:17:19

+0

那麼,你可以嘗試獲取鏈表的大小..接下來你會做什麼?你可以遍歷鏈表嗎?你可以有一個相同大小的數組?嘗試一下。 – 2014-12-05 22:18:12

回答

2
public <T> T[] convert (List<T> list) { 
    if(list.size() == 0) { 
     return null; 
    } 
    T[] array = (T[])Array.newInstance(list.get(0).getClass(), list.size()); 
    for (int i=0;i<list.size();i++) { 
     array[i] = list.get(i); 
    } 
    return array; 
} 
+0

我需要把它放到一個方法中,我可以將任何鏈接列表轉換爲數組。 '公共無效convertToArray()' 是我該怎麼做呢? – user4330497 2014-12-05 22:20:21

+0

這種方法是否適合你 – outdev 2014-12-05 22:34:58

4

要做到這一點,最簡單的方法是利用LinkedList.toArray方法

// create an array and copy the list to it 
    Employee[] array = list.toArray(new Employee[list.size()]); 

不過,如果你剛開始學習,想反覆做這個。想想你將如何聲明和獲取所有的項目到一個數組中。

首先,你需要做什麼?

1)聲明的員工

陣列。爲了做到這一點,你知道有多大,以使數組因爲數組的大小不能申報後更改。有自List繼承的方法稱爲.size()

Employee[] array = new Employee[list.size()] 

2)對於數組中的每一個時隙中,複製對應元素列表中的

爲此,需要利用一個for循環

for(int i = 0; i < array.length; i++) { 
    //access element from list, assign it to array[i] 
} 
+1

這是一個小問題,但是傳遞給'toArray'的數組可以是任意長度,包括0.'toArray'將返回一個新分配的相同類型的數組。 – 2014-12-05 22:20:05

+2

@JeffBowman如果你傳遞了一個正確大小的數組,那麼該方法將不必創建另一個合適的大小來返回給你。 – khelwood 2014-12-05 22:22:24

+0

夠公平的。我忘記了數組實例[如果可能的話重用](http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#toArray(T%5B%5D)) 。 – 2014-12-05 22:33:32

1
Employee[] arr = new Employee[list.size()]; 
int i = 0; 
for(Employee e : list) { 
    arr[i] = e; 
    i++; 
} 
相關問題