String - List

Hallo Leute,

Ich will zwei Variable in einer Container speichern. Dafür kann ich List verwenden oder String concat ist hier auch eine Möglichkeit.

Welches soll ich verwenden warum ? also welches haltet mehr Platz, oder durch welchem Benutz kann das Programm schneller laufen ?

Lg

Container ist für dich ein Java Objekt? In welchem Szenario?

Im übrigen ziemlich egal. Den Unterschied wird niemand merken. Dennoch ist die Speicherung von verschiedenen Objekten in Datenstrukturen wie Listen vorzuziehen. 2 Strings zu konkatenieren um sie zu speichern macht wohl in keiner Situation Sinn.

Um die Frage beantworten zu können musst Du etwas mehr “Fleisch” in Deine Anfrage legen:[ul][li]Handelt es sich nur um zwei Werte oder handelt es sich um eine Liste von Wertepaaren?
[/li][li]Wenn letzteres, gibt es zwischen den Werten eine “Schlüssel/Wert” Beziehung?[/ul]Je nachdem wie Du diese Fragen beantwortest kommen verschiedene Lösungen in Frage: ein einfaches DTO (DataTransferObject) , eine Map oder eine List die DTOs enthält.
[/li]
bye
TT

Hallo,

Ich will z.B „a,b,c,d“ In liste haben. Das Kann ich mit der ArrayList wohl.

entweder so: List list = new ArrayList();
list.add(„a“) …

oder so :
String str = new String();
str.concat(„a“).concat(„b“);

Die Frage war, welches zu verwenden ist besser warum ?

Und Danke schön für die Antwort :slight_smile:

Eindeutig Ersteres, und zwar nicht aus technuischen Gründen:

Aus technischer Sicht wären nämlich beide Lösungen (noch) gleichwertig.
Aber wass passiert, wenn die Elemente nicht mehr nur aus einem Zeichen bestehen? Die “List”-Lösung kann ohne weiteres auch mit längeren Strings umgehen, die “Concatenate”-Lösung nicht.

bye
TT

Hm, ja, etwas drüber nachdenken. Ein langer String benötigt weniger Speicherplatz, eine Liste mit mittelgroßen Elementen ist schneller (so wie oben für kleine Elemente langsamer). Am schnellsten ist für Vorne und Hinten einfügen array deque.

Vor- und Nachteile will ich jetzt nicht aufzählen, aber all so was ist denkbar:

list.add('a');
list.add('b'); /* .... */```

```List<Character> list = new LinkedList<Character>();
list.add('a');
list.add('b'); /* .... */```

```StringBuilder sb = new StringBuilder(/* 13 * 1024 */);
sb.append("abcd");
sb.append('-');
sb.append("efgh");
sb.append('-'); /* .... */```

Soweit alles klar? str.concat( und +-Konkatenation hat den Nachteil, dass Strings immutable sind und jedes Mal alle Zeichen der beiden Zeichenketten kopiert werden müssen.

"So I'ma just say good night, to you ... And so far (so far)"xD^^

OT:
Ab Java 7 kann man übrigens die redundanten Typparameter weglassen.
Statt List<String> list = new ArrayList<String>(); braucht man nur noch List<String> list = new ArrayList<>(); zu schreiben (Diamond-Operator).

Jo, diamonds, hilft dem/der TO 1. nicht, ist 2. schwerer lesbar und ist 3. nicht abwärtskompatibel (sowie schreibt mir das die IDE 4. per/via Autovervollständigung, wenn es benötigt wird).

Ach ja, das sind 5. generische (formale) (Typ-)Parameter(/-Typen), aber da will ich mich nicht unnötig aus dem Fenster lehnen (weit). Grüße. (Alle sind richtig)

Hi,

diamonds, hilft dem/der TO 1. nicht
Woher weist du das?

ist 2. schwerer lesbar
Ansichtssache

ist 3. nicht abwärtskompatibel
Und?

sowie schreibt mir das die IDE 4. per/via Autovervollständigung, wenn es benötigt wird
Ob das dem/der TO hilft?

:stuck_out_tongue_winking_eye:

Suchst du Streit?

Edit: aj gut, bin schlecht drauf.

das Posting von 12:48 war eine neutral-sinnvolle Anmerkung
(wobei man die fast in jeden Thread posten könnte, war ja auch als ‚OT‘ markiert, Java 7 ist auch in Jahren noch nicht überall :wink: ),

die Aufzählung der 5 Punkte von 13:01 unnötig, wenn was Streitsuche war, dann das,
und nun ist hoffentlich Ruhe dazu,
@reno , du brauchst dich CyborgBeta gegenüber nicht (noch weiter) zu rechtfertigen, lohnt nicht

[QUOTE=CyborgBeta]
Soweit alles klar? str.concat( und ±Konkatenation hat den Nachteil, dass Strings immutable sind und jedes Mal alle Zeichen der beiden Zeichenketten kopiert werden müssen. [/QUOTE]

Das wusste ich nicht, danke für die Info :slight_smile:

Genau aus diesem Grund habe ich die Frage gestellt, weil ich wissen wollte, mit welchem Variante ich weniger Speicherplatz benötige. Danke für die Antwort :slight_smile: