2016-11-15 3 views
4

Ich habe eine kleine Frage, wie Arrays mit unbekannter Größe erstellt werden können. Ich denke, der beste Weg ist die Verwendung der java.util.ArrayList; meine Frage ist, was ist der Unterschied zwischen:Array mit unbekannter Größe

ArrayList client_Catalog = new ArrayList<>(); 

Und

List<> list = new ArrayList<>(); 

Btw auf meinem Programm Ich versuche, eine leere Liste zu erstellen, wo ich werde store Kunden info bin, so, Objekte von dieser Klasse kenne ich die endgültige Größe nicht.

+0

Für den Anfang, weder kompilieren ... aber Sie finden Trost in der Suche nach "Was ist ein roher Typ und warum sollten wir es vermeiden", sowie "Programmierung an die Schnittstelle". – Makoto

+0

Was zum Teufel macht den Unterschied zwischen diesen beiden Zeilen mit dem Erstellen von Arrays unbekannter Größe zu tun? – user2357112

Antwort

2

Es gibt kein Array mit unbekannter Länge. Sie haben entweder ein Array mit fester Länge oder eine List, die flexible Größe ist.

Seite Bemerkung
Bitte denken Sie daran, dass String[] eine Referenz auf ein Array von Strings jeder Größe halten kann und dass Array geändert werden kann, aber man kann es nicht anhängen. Sie können nur den vorherigen Inhalt in ein größeres Array kopieren und dann den Platz füllen, der übrig war.

List ist ein Interface. ArrayList ist eine seiner Implementierungen.

ArrayList client_Catalog = new ArrayList<>(); 

sagt: Lassen Sie die client_Catalog ein ArrayList und sei es zunächst leer sein. Auf der anderen Seite haben Sie:

List<> list = new ArrayList<>(); 

die list jede Implementierung eines List sein sagt lassen. Es kann ArrayList, LinkedList oder was auch immer implementiert werden. Die einzige Sache, die Sie garantiert haben, ist, dass dieser Artikel alle Methoden von List Schnittstelle hat.

Und jetzt, wie man mit Generika umgeht. List ist . Eines Tages dachte jemand, dass es keinen Grund gibt, List für jeden Datentyp zu implementieren, und beschloss, Generika einzuführen. Sie müssen angeben, welchen Typ diese Liste haben soll. Es ist mit diesen <> Klammern gemacht.

Zum Beispiel ArrayList von String s erstellen Sie schreiben:

ArrayList<String> myList = new ArrayList<>(); 

Wie es ist nur eine Q & Eine Zone, werde ich dir nicht alles beibringen, aber meine Antwort hat über Listen, einige Grundlagen. Ich habe auch beschlossen, Links zu einigen offiziellen Tutorials und Dokumentationen zu finden, um Ihnen beim Lernen zu helfen. Für den Fall, dass es etwas gibt, das Sie gerne verlängern würden, fragen Sie bitte in einem Kommentar.

0

Jede der Optionen ist in Ordnung, um Ihre Anforderung zu erfüllen. Es ist besser, die List-Schnittstelle als Rückgabetyp einer Methode zu verwenden. In diesem Fall wird es die tatsächliche Implementierung der Liste abstrahieren, d. H. Der Aufrufer der Methode braucht die tatsächliche Implementierung nicht zu kennen.

-1

Zwischen

ArrayList client_Catalog = new ArrayList<>(); 

und

List<> list = new ArrayList<>(); 

kein Unterschied da sein. Beide funktionieren und arbeiten genau so, wie Sie es nicht tun. Der einzige Unterschied ist, dass man in den zweiten Beispielen nicht nur eine ArrayList haben kann. Aber auch zum Beispiel LinkedList oder ein anderes Objekt, das die List interface implementiert.

Ich würde in Ihrem Fall, wählen Sie die obere, um sicherzustellen, dass es immer ein ArrayList ist, wenn Sie sich darauf 100% verlassen wollen.

Verwandte Themen