[Java] Сгенерировать строчку из одинаковых символов заданной длины

enochka1145

Как сделать на Java попроще? Хочется, чтобы выглядело типа:
new String('*', 100)
Пока что я делаю
StringBuffer sb = new StringBuffer;
for (int i = 0; i < 100; i++) {
sb.append('*');
}
String str = sb.toString;
и чувствую себя при этом полным идиотом...
Желающим поприкалываться над Java - welcome, но только с условием, что предоставите аналог на своём языке.

artimon

perl
$s ='*' x 100

sasha79

C# :
new string('*', 100);

artimon

php
$s = str_pad('',100,'*');
или
$s = str_repeat('*', 100);

sasha79

C++ :
new std::string(100, '*');

vlfdimir58

Хм.. я со своим примером тоже себя полным идиотом почувствовал )
for ($s=''; strlen($s) <= 100; $s .= '*') {}  

uncle17

тогда уж

$s.="*"

^)

vlfdimir58

я уж подправил %)

artimon

Пока что я делаю
...
и чувствую себя при этом полным идиотом...
Ну, ты можес соптимизировать процесс. Но, по-ходу, других решений нет.

artimon

Dasar

> StringBuffer sb = new StringBuffer;
есть подозрение, что через массив чаров будет быстрее

enochka1145

Да, действительно, он же на char[] основан. Спасибо!
Итого, в данном случае:
char[] cs = new char[100];
Arrays.fill(cs, '*');
String s = new String(cs);

durka82

Еще можно попробовать оптимизировать исходный пример аналогично алгоритму быстрого возведения в натуральную степень...

enochka1145

Спасибо конечно, но круче какого-нибудь
mov al, '*'
mov dx, destination
mov cx, total
rep stosb
вряд ли что-нибудь есть.

Marinavo_0507

SSE сейчас в моде

Werdna

for (int i = 0; i < 100; i++) {
sb.append('*');
}
Мелкомягкие CString'и тут будут работать с квадратичной скоростью из-за append.
А в STL есть конструктор такой...
А Java сосет, как обычно.

Dasar

> А в STL есть конструктор такой...
AFAIK, STL-конструктор делает ровно такой же код:

char[] cs = new char[100];
Arrays.fill(cs, '*');
String s = new String(cs);

got-anna

Java:
String s = "*************************************************************************************************************************************************"
It's OK

Alpharius

Java:
String s="*".repeat(100);
Оставить комментарий
Имя или ник:
Комментарий: