2013-05-28 12 views
5

se voglio un String s che consisterebbe di n istanze di carattere A, questo può essere fatto più pulito in Java altri poiCome creare una stringa di lunghezza composta dallo stesso carattere ripetuta più volte?

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

Possiamo fare di meglio? Mi stavo solo chiedendo.

+1

Sarebbe più pulito se non avessi modificato la variabile parametro, ma per il resto mi sembra buona. – Keppil

+4

Dovresti preimpostare il tuo costruttore. (o usa solo un 'char []') – SLaks

risposta

16

Niente di sbagliato in questo codice a tutti ... Ma forse è possibile utilizzare 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

Penso che questa opzione sia la migliore. Per aumentare la velocità (ma consumare più memoria) possiamo anche aggiungere il caching a questa soluzione. Memorizza i risultati in 'Map > cache' e poi ottieni la stringa giusta senza generazione. –

7

Si potrebbe fare la seguente:

return StringUtils.repeat(ch, size); 

Nota: StringUtils non è built-in a il JDK - vedi http://commons.apache.org/proper/commons-lang/

+2

Non ci sono 'StringUtils 'incorporati nel JDK. – fge

+0

Oppure solo 'StringUtils # repeat()' se 'StringUtils' è disponibile. – Keppil

+0

@fge - hai ragione, ha aggiunto una nota –

Problemi correlati