2016-01-28 11 views
6

Welche ist effizienter, um eine Liste zu instanziieren?Welche ist effizienter Array-Liste zu verwenden?

List<Type> list = new ArrayList<Type>(2); 
list.add(new Type("one")); 
list.add(new Type("two")); 

ODER

List<Type> list = Arrays.asList(new Type("one"), new Type("two")); 

Antwort

14

Sie schaffen verschiedene Arten von Objekten. new ArrayList<>() schafft eine java.util.ArrayList, die hinzugefügt werden können, usw.

Arrays.asList() eine Art verwendet, die auch bezeichnet werden ArrayList geschieht, ist aber ein verschachtelter Typ (java.util.Arrays$ArrayList) und nicht zulässt, dass Elemente hinzugefügt oder entfernt werden, . Es nur Wraps ein Array.

Nun, wenn Sie sich nicht um diese Unterschiede kümmern, enden Sie mit zwei ungefähr gleichwertige Implementierungen, die beide ein Array in der List<>-Schnittstelle umhüllen. Ich wäre sehr überrascht zu sehen, dass sie in der Leistung in irgendeiner signifikanten Weise unterscheiden - aber wie immer, wenn Sie spezifische Leistungsbedenken haben, sollten Sie sie in Ihrem speziellen Kontext testen.

+4

Wow, ich wusste gar nicht, dass ArrayList aus 'Arrays.asList()' eigentlich eine andere ArrayList ist als die java.util.ArrayList. – exception1

+2

Das wusste ich auch nicht ... Wie es scheint, unterscheiden sich die 2 Varianten ein wenig in der Effizienz (zumindest auf meiner Maschine). Bei 100 Millionen Läufen benötigt die erste Variante ~ 1500 ms und die zweite ~ 900 ms – ParkerHalo

Verwandte Themen