2017-12-18 4 views
0

Im Grunde habe ich dies:Effizienter Weg, um zwei For-Schleifen zu vermeiden und zu einem zu kombinieren?

(path ist ein String Array)

String writer = ""; 
    for (int i = 0; i < path.length; i++) { 
     writer += path[i] + "{"; 
    } 
    writer += string; 
    for (int i = 0; i < path.length; i++) { 
     writer += "}"; 
    } 

Aber das sieht hässlich und ineffizient. Gibt es eine Möglichkeit, dies in nur eine For-Schleife zu kombinieren?

+3

Was versuchen Sie damit? Ist es ein Codeblockgenerator? Erkläre den Zweck der Schleifen oder wir können dir nicht helfen. –

+0

Was hier nicht effizient ist, sind nicht die beiden Schleifen. Es ist String-Verkettung. Verwenden Sie einen StringBuilder. Die Verwendung von foreach-Schleifen würde es auch weniger hässlich machen. –

+0

Es hilft Ihnen, wenn Sie uns wissen lassen, was genau Sie erreichen möchten ... Es gibt keine genaue Möglichkeit, zwei for-Schleifen zu verwenden. Alles hängt davon ab, was Sie zu tun versuchen. – Taslim

Antwort

3

Ohne intelligente Mittel weist die folgende Geschwindigkeit:

StringBuilder sb = new StringBuilder(); 
for (String p : path) { // Might cost a bit of speed. 
    sb.append(p).append('{'); 
} 
sb.append(string); 
for (int i = 0; i < path.length; ++i) { 
    sb.append('}'); 
} 
String writer = sb.toString(); 

in einer Schleife:

StringBuilder sb = new StringBuilder(string); 
for (int i = path.length - 1; i >= 0; --i) { 
    sb.insert(0, '{'); 
    sb.insert(0, path[i]); 
    sb.append('}'); 
} 
String writer = sb.toString(); 
+2

Es gibt immer noch zwei Schleifen –

+0

@CardinalSystem Sie haben Recht, machte es eine Schleife. –

5

Hier ist eine Lösung ohne for -loop und mit dem Einsatz von StringBuilder anstelle von += -Konstrukte, die zu Speicher- und Leistungsproblemen führen können.

StringBuilder firstPart = new StringBuilder(); 
StringBuilder lastPart = new StringBuilder(); 

Arrays.stream(path) 
    .forEach(elem -> { 
     firstPart.append(elem); 
     firstPart.append("{"); 
     lastPart.append("}"); 
    }); 

firstPart.append(string); 
firstPart.append(lastPart.toString()); 
String writer = firstPart.toString(); 
Verwandte Themen