2013-05-28 10 views
5

Wenn ich ein String s welche A von n Instanzen Zeichen bestehen möchte, kann diese Reiniger in Java andere dannWie erstellt man eine Zeichenfolge mit Länge, die aus demselben Zeichen besteht, das mehrmals wiederholt wird?

public static String stringOfSize(int size, char ch) { 
    StringBuilder s = new StringBuilder(); 
    while (size-- > 0) { 
     s.append(ch); 
    } 
    return s.toString(); 
} 

Können wir es besser machen getan werden? Ich frage mich nur.

+1

Es wäre sauberer, wenn Sie die Parametervariable nicht geändert hätten, aber sonst sieht es gut für mich aus. – Keppil

+4

Sie sollten Ihren Builder presize. (oder einfach ein 'char []') – SLaks

Antwort

16

Nichts falsch mit diesem Code überhaupt ... Aber vielleicht können Sie verwenden Arrays.fill():

public static String stringOfSize(int size, char ch) 
{ 
    final char[] array = new char[size]; 
    Arrays.fill(array, ch); 
    return new String(array); 
} 
+0

Ich denke, dass diese Option die beste ist. Um die Geschwindigkeit zu erhöhen (aber mehr Speicher zu verbrauchen), können wir dieser Lösung auch Caching hinzufügen. Speichern Sie die Ergebnisse in 'Map > Cache' und erhalten Sie dann einfach die richtige Zeichenfolge ohne Generierung. –

7

Sie könnten wie folgt vorgehen:

return StringUtils.repeat(ch, size); 

Hinweis: StringUtils ist nicht eingebaut, um das JDK - siehe http://commons.apache.org/proper/commons-lang/

+2

Im JDK sind keine 'StringUtils' eingebaut. – fge

+0

Oder nur 'StringUtils # repeat()' falls 'StringUtils' verfügbar ist. – Keppil

+0

@fge - Sie haben Recht, eine Notiz hinzugefügt –

Verwandte Themen