2017-04-11 62 views
-6

我一直在學習Java過去的這個星期,然後複製我用這3種方式的ArrayList時:這3種複製ArrayList的方式是否可以接受?

// arrayListSource is an ArrayList with some ints. 

// First way: 
ArrayList<Integer> copyOne = new ArrayList<>(); 
copyOne.addAll(arrayListOne); 

// Second way: 
ArrayList<Integer> copyTwo = new ArrayList<>(arrayListSource.subList(0, arrayListSource.size())); 

// Third way: 
ArrayList<Integer> copyThree = new ArrayList<>(arrayListSource); 

是這3種方式複製的ArrayList的一種可接受的方式?如果是這樣,是否有理由專門使用一種方式? (除了可讀性之外的一個原因)。 謝謝。

+4

是的,他們很好。通常你會選擇第三種方法。此外,它拼寫'ArrayList'。 –

+4

只是旁註,*使用泛型*。 –

+0

那麼問題是什麼?我不認爲問「這些方法可行嗎?」是不明智的問題。您可能會問「這些方式之間有什麼區別」,「爲什麼我在使用方法XXX時出現balblablabala問題」等。 –

回答

0

是,所有3個都是精品,雖然對於目的可讀性並在評論中指出的@Adrian,爲更好的性能,使用第三個。此外,請使用泛型的是這樣的:

ArrayList<Integer> copyThree = new ArrayList<>(arrayListSource); 
+1

不僅爲了可讀性,而且在性能方面,方法3將是最好的。 –

+0

@AdrianShum感謝您的建議。編輯答案反映這 –

+0

@AdrianShum你有基準嗎? – ZhekaKozlov

1

您可以使用其中一個,但作爲@雅各布-G說,通常你需要使用第三個原因是更具有可讀性。並且記得編碼到接口,所以你需要使用List作爲ArrayList的接口。事情是這樣的:

List<?> copyThree = new ArrayList<>(arrayListSource); 

所以每當你想從ArrayList中 LinkedList的改變到另一個List實現像,你並不需要改變的ArrayList到LinkedList的無處不在。

你可以閱讀關於列表與ArrayList從:Type List vs type ArrayList in Java

相關問題