2015-04-28 22 views
0

Я хочу установить размер моего объекта StringBuffer в соответствии с требованиями в коде.Как мы можем увеличить размер StringBuffer?

StringBuffer sb = new StringBuffer(); 

for (List<Integer> l : lists) 
{ 
    sb.delete(0, sb.length()); 
    //here i want to set size of sb according to l.size() 
} 

Я хочу установить размер по-разному на каждой итерации.

+1

Подсказка: попробуйте прочитать Javadoc, который поставляется с такими классами, как http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html. Конечно, приятно, что люди отвечают на ваш вопрос, чтобы сутенерствовать свою репутацию; но, кроме того, для сообщества нет никакой пользы, попросив что-то тривиальное. Кроме того: рассмотрите возможность использования StringBuilder вместо StringBuffer. – GhostCat

+0

Я знаю, что это вопрос тривиального типа, но есть хорошая вещь, чтобы знать, как это можно сделать. Потому что никакого метода в классе StringBuffer нет. –

+0

Хорошо, что вы ожидаете? StringBuffer может быть создан с заданной пропускной способностью; и javadoc сообщает вам: «ah, right, емкость не может быть изменена позже». Теперь, какой ответ вы ожидаете при запросе «как я могу изменить емкость?» ... другие люди не могут магически добавлять такие методы в класс. Кроме того: почему вы беспокоитесь о мощности? Вы имеете дело с миллионами элементов списка; и необходимость микро-оптимизации вашего кода? – GhostCat

ответ

1

Если вы хотите, чтобы ваш StringBuffer быть инициализирован с размером вашего List, просто инициализировать его, передавая размер как int:

StringBuffer sb = new StringBuffer(l.size()); 

Редактировать

Если вам необходимо установить размер динамически, исходя из значений в вашем List, вы можете использовать следующую идиому:

List<Integer> l = new ArrayList<Integer>(Arrays.asList(new Integer[]{1,2,3})); 
StringBuffer sb = new StringBuffer(); 
for (int i: l) { 
    sb.setLength(i); 
} 

Побочное примечание

Вам не нужно использовать StringBuffer, если вы не мутирует его в многопоточном контексте.

Вместо этого вы можете использовать StringBuilder.

+0

StringBuilder также не имеет возможности увеличить размер –

+0

, если мы назовем этот метод, тогда он добавит пробелы в буфер, и если мы добавим другую строку, то эта строка будет добавлена ​​после этого пробела. –

+0

то же, что и в StringBuilder, этот класс не имеет определенного метода для определения размера. –

Смежные вопросы