我創建了一個LinkedList
,其中存儲了一個Employee
對象。我需要編寫一個方法convertToArray
,它將從LinkedList
中獲得一個Employee
的數組。將LinkedList轉換爲Arrary
任何想法?
我創建了一個LinkedList
,其中存儲了一個Employee
對象。我需要編寫一個方法convertToArray
,它將從LinkedList
中獲得一個Employee
的數組。將LinkedList轉換爲Arrary
任何想法?
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;
}
我需要把它放到一個方法中,我可以將任何鏈接列表轉換爲數組。 '公共無效convertToArray()' 是我該怎麼做呢? – user4330497 2014-12-05 22:20:21
這種方法是否適合你 – outdev 2014-12-05 22:34:58
要做到這一點,最簡單的方法是利用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]
}
這是一個小問題,但是傳遞給'toArray'的數組可以是任意長度,包括0.'toArray'將返回一個新分配的相同類型的數組。 – 2014-12-05 22:20:05
@JeffBowman如果你傳遞了一個正確大小的數組,那麼該方法將不必創建另一個合適的大小來返回給你。 – khelwood 2014-12-05 22:22:24
夠公平的。我忘記了數組實例[如果可能的話重用](http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#toArray(T%5B%5D)) 。 – 2014-12-05 22:33:32
Employee[] arr = new Employee[list.size()];
int i = 0;
for(Employee e : list) {
arr[i] = e;
i++;
}
什麼努力,你做這麼遠嗎? – 2014-12-05 22:17:19
那麼,你可以嘗試獲取鏈表的大小..接下來你會做什麼?你可以遍歷鏈表嗎?你可以有一個相同大小的數組?嘗試一下。 – 2014-12-05 22:18:12