На этом уроке мы создадим интерфейс Strategy(), в котором будет всего один метод join(). Так же реализуем классы стратегий StrategyString и StrategyBuffer().
Дата отправки отчёта:
6 марта 2017 г.
Задание выполнено: за
20 мин.
Чему научился:
Повторил пройденное
Что было сложным:
найти время
Комментарии:
И без таймера знаю, что конкатенация строк перед добавлением в StringBuilder/Buffer() не отнимает время, поэтому каждую строчку нужно .append() отдельно друг от друга, это будет быстрее.
Научился: StringBuffer работает с объектами оптом, стринговый += конкатенирует объекты в розницу
Когда объектов мало - разница незаметна, при больших массивах данных буферизиованная обработка предпочтительнее
Научился: Зависит от (в интернете)
1.Выбор метода зависит от количества строк
2.Для соединения двух строк лучше использовать родной String.concat()
3.Для часто вызываемого метода, в котором будут соединяться больше двух строк, лучше использовать последний метод с очищением буфера и повторного его использования. Для thread-safety можно делать это поле ThreadLocal, например. Или вообще не-статичным членом класса.
4.В ходе экспериментов так же выяснилось, что одиночные a+b(+c) лучше заменять на a.concat, при большем количестве — StringBuilder.