Was wird schneller sein, wenn eine geteilte Zeichenfolge in einem Array gespeichert und dieses Array in meinem Programm verwendet wird, oder kann ich die .split () -Methode für die Zeichenfolge aufrufen, wenn ich ein Array zum Durchlaufen benötige?

String main = "1,2,3,4,5,6"; 
String[] array = main.split(",");

Vs

main.split(",");

Wann muss ich die Eingabewerte verwenden?

Mir ist klar, dass es viel besser lesbar ist, wenn ich den String in einem Array speichere. Ich möchte nur wissen, ob die .split () mehr Rechenzeit benötigt als die Verwendung eines Arrays. Da die Split-Methode ein Array zurückgibt, das die Split-Strings enthält.

Eine einfache Beispielschleife (?) Zur Frage:

for (int i = main.length - 1; i >= 0; i--){}

Vs

for (int i = main.split(",") - 1; i >= 0; i--){}
0
lopen 19 Feb. 2020 im 23:36

3 Antworten

Beste Antwort

Es ist ein Kompromiss, wie die meisten derartigen Dinge in der Programmierung. Wenn Sie nur einmal teilen und das Array von da an direkt verwenden, sparen Sie Verarbeitungszeit auf Kosten des Speichers. Wenn Sie jedes Mal teilen, sparen Sie Speicher auf Kosten der Verarbeitungszeit.

Einer ist zeiteffizienter, der andere platzsparender.

3
alzee 19 Feb. 2020 im 20:48

Ich würde es vorziehen, einmal zu teilen und die Token unabhängig von der Größe des Arrays zu behalten. Wenn das resultierende Array groß ist, ist es jedes Mal teurer, es zu teilen. Wenn es klein ist, wird der resultierende Speicher wahrscheinlich kein Faktor sein.

Wenn Sie sich Sorgen über die Speicherung eines großen Arrays machen, sollte auch das letzte Mal, wenn Sie sich trennen, ein Problem sein. Um dies zu vermeiden, weisen Sie dem Array einfach null zu, wenn Sie fertig sind, und lassen Sie den Garbage Collector seine Sache tun.

Wenn ich eine Reihe von Token durchlaufen würde, würde ich es wahrscheinlich so machen.

for (String token : main.split(",")) {
    // do some stuff.
}

Dadurch wird das Array einmal erstellt.

0
WJS 19 Feb. 2020 im 21:20

Wie Sie sehen können, gibt die split() -Methode ein Array zurück, sodass die main.split(",") hinter den Kulissen jedes Mal iteriert, wenn Sie sie über den main String aufrufen, um die Werte zu extrahieren. Es ist also schneller, es nur einmal zu verwenden und das Ergebnis zu verwenden.

0
Sebastian I. 19 Feb. 2020 im 20:43