2011-01-10 37 views
2

我有一個數組列表(稱爲A)。我有另一個數組列表,它也被填充(稱爲B)。Concat兩個填充陣列列表不覆蓋任何東西?

A具有 B具有3個元素

是否有可能爲我添加所有B的元素A的,使B的元素從圖6(A + 1的長度)開始,總的5種元素8個元素。我希望能夠做到這一點,而不是任何複雜的循環,但內置的方法?

此外,表現明智,這種想法有多糟?(如果它不好)?

謝謝

回答

7

我相信List.addAll(索引,集合)方法應該做你需要的。

在您提到的尺寸時,不應該爲您顯示性能點。即使是2個數量級也不是問題。

編輯:我仔細檢查了ArrayList.addAll()的實現。它的效率和效率一樣。它將進行單一增長以容納新元素,並使用System.arrayCopy來移動元素。

1

List.addAll()

服務表現的角度來看,這是不可能會5 + 3 太大的影響如果有更大的,你可以創建正確大小的新ArrayList第一,以避免不必要的分配。或者,使用LinkedList,它將具有不同的性能特徵。

編輯:正如其他人所解釋的那樣,ArrayList.addAll()與您所能得到的一樣好。

+1

我強烈建議不要使用LinkedList進行此操作。它分別分配每個新節點並將它們附加到列表的末尾。對於大多數大小,它不會像ArrayList那樣高效,對於這個特定的操作。當然有病理性病例,但我會堅持ArrayList。 – rfeak 2011-01-11 00:14:34