Нет проблем с текущим подходом, но я чувствовал, насколько он длинен, я имею в виду, есть ли способ оптимизировать его без использования sourceArray.
Вы не говорите, что вы пытаетесь оптимизировать: производительность? использование памяти? читаемость
Если вы беспокоитесь о производительности, следующий вопрос заключается в том, оправдана ли ваша обеспокоенность. Вы запустили свое приложение? Это слишком медленно? Вы профилировали и определили, что разделение линий занимает значительное время?
Что конкретно не так с использованием массива? (Да, я знаю, что выделение массива чего-то стоит, но есть ли у вас доказательства того, что это важно?)
Если вы пытаетесь оптимизировать для удобства чтения, я бы сказал, что использование String.split, вероятно, более читабельно для этого примера. (Многие Java-программисты никогда не сталкивались / не использовали класс StringTokenizer
.)
Если вы пытаетесь оптимизировать производительность / использование памяти, тогда стоит попробовать StringTokenizer
, но я не гарантирую, что это быстрее. Другая альтернатива - использовать Pattern
и Matcher
напрямую следующим образом:
Pattern pattern = Pattern.compile("([^;]*);(.*)");
while ((line = bufferedReader.readLine()) != null) {
Matcher matcher = pattern.matcher(line)
if (matcher.matches()) {
basebooleanentitieslist.put(matcher.group(1), matcher.group(2));
}
}
(Кстати, код about будет обрабатывать случай, когда строка не разделится изящно; то есть, не выбрасывая исключение. Если вы хотите явно разобраться с этим, добавьте предложение else
.)