2017-03-02 3 views
0

Wir haben eine Liste von Array erstellen können 3 Möglichkeiten in folgenden (In Java 7),

1. Mit Arrays.asList()
2. ArrayList.addAll()
3 verwenden. Mit Collections.addAll()Erstellen einer Liste von einem Array - 3 Möglichkeiten, welche besser ist

// Using Arrays.asList() 

String[] stringArray = {"foo", "bar", "baz"}; 
List<String> stringList = new ArrayList<>(Arrays.asList(stringArray)); 

// Using ArrayList.addAll() 

String[] stringArray = {"foo", "bar", "baz"}; 
ArrayList<String> list = new ArrayList<>(); 
list.addAll(Arrays.asList(stringArray)); 

// Using Collections.addAll() 

String[] stringArray = {"foo", "bar", "baz"}; 
ArrayList<String> list = new ArrayList<>(); 
Collections.addAll(list, stringArray); 

, welches das beste ist und für welche Situation? Und gibt es einen Unterschied zwischen diesen drei?

+1

Offensichtlich braucht die erste weniger Code ... –

+2

Erste und zweite sind gleich. Drittens ist eine nette Verwendung von Bibliothekscode, aber eigentlich ist auch das gleiche wie erste und secodn. Wenn Sie Ihre Liste danach nicht ändern müssen, würde ich nur 'Arrays.asList (values)' verwenden, da es am wenigsten Arbeit erfordert ('O (1)', um das Array zu umbrechen). –

+1

@ M.Prokhorov Eigentlich ist 3 etwas anders, da es keine unmodifizierbare Zwischenliste erstellt, sondern die Elemente direkt in einer Schleife hinzufügt. –

Antwort

4

Die wichtigsten Unterschiede sind wie folgt:

Arrays.asList() schafft eine nicht-veränderbare List, hier nur als Zwischen verwendet, um den new ArrayList(List) Konstruktor zugreifen. Wenn Sie keine veränderbare Liste benötigen, ist die Verwendung von nur Arrays.asList() die einfachste/sauberste Lösung.

ArrayList.addAll() wäre die „Standard“ Art und Weise, Dinge zu einer bestehenden Liste hinzuzufügen (möglicherweise bereits Daten enthalten, anders als in dem Beispiel-Code), aber ...

Collections.addAll() ist eine bequeme Methode:

Das Verhalten dieser Komfortmethode ist identisch mit dem von c.addAll(Arrays.asList(elements)), aber diese Methode wird wahrscheinlich wesentlich schneller unter den meisten Implementierungen laufen.

Any „betterness“ zwischen den drei hängt ganz von Ihrer Situation und realistisch betrachtet, es ist in erster Linie ein Code-Stil Problem, anstatt leistungsabhängig.

Verwandte Themen