2013-05-28 42 views
5

Nếu tôi muốn có một String s trong đó sẽ bao gồm n trường hợp của nhân vật A, điều này có thể được thực hiện sạch hơn trong Java khác sau đóLàm thế nào để tạo chuỗi chiều dài bao gồm cùng một nhân vật lặp đi lặp lại nhiều lần?

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

Chúng ta có thể làm tốt hơn? Chỉ cần tự hỏi.

+1

Nó sẽ sạch hơn nếu bạn không thay đổi biến thông số, nhưng nếu không nó có vẻ tốt với tôi. – Keppil

+4

Bạn nên xác định người xây dựng của mình. (hoặc chỉ sử dụng 'char []') – SLaks

Trả lời

16

Không có gì sai với mã này ở tất cả ... Nhưng có lẽ bạn có thể sử dụng 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

Tôi nghĩ rằng tùy chọn này là tốt nhất. Để tăng tốc độ (nhưng tiêu thụ nhiều bộ nhớ hơn), chúng tôi cũng có thể thêm bộ nhớ đệm vào giải pháp này. Lưu trữ các kết quả trong 'Bản đồ > bộ nhớ cache' và sau đó chỉ nhận chuỗi bên phải mà không cần tạo. –

7

Bạn có thể làm như sau:

return StringUtils.repeat(ch, size); 

Lưu ý: StringUtils không được xây dựng-in để JDK - xem http://commons.apache.org/proper/commons-lang/

+2

Không có nội trang 'StringUtils' trong JDK. – fge

+0

Hoặc chỉ 'StringUtils # repeat()' nếu 'StringUtils' có sẵn. – Keppil

+0

@fge - bạn nói đúng, đã thêm ghi chú –

Các vấn đề liên quan