Код: Выделить всё
xxxx-7xxx-xxxx
Код: Выделить всё
0000-7000-0001
0000-7000-0002
...
0000-7fff-ffff
0001-7000-0000
Код: Выделить всё
public class GeneratorTemplate {
private static final AtomicLong COUNTER = new AtomicLong(0);
public static String generateTemplate() {
// incrementing the counter
long currentValue = COUNTER.getAndIncrement();
// get 11 character (not 12 because 7 is a literal and appended) hex value represented as string
String rawResult = String.format("%011X", currentValue & 0xFFFFFFFFFFFL);
// append and format values
return (rawResult.substring(0, 4) +
"-7" +
rawResult.substring(4, 7) +
"-" +
rawResult.substring(7)).toLowerCase();
}
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println(generateTemplate());
}
}
}
Проблема производительности связана с тем фактом, что я добавляю 7, дефисы и строчные буквы вручную. Я думаю, что если я сделаю это в методе format(), моя производительность увеличится. Кроме того, такой код был бы более понятным.
Я пытался сделать это в одну строку, но безуспешно. Этот код явно неверен, и мне интересно, как правильно использовать метод format(), чтобы мне не приходилось ничего добавлять вручную:
Код: Выделить всё
return String.format("%04X-7%03X-%04X", currentValue & 0xFFFFL, currentValue & 0xFFFL, currentValue & 0xFFFFL);
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/785 ... ith-format
Мобильная версия