Это самый эффективный способ добавить массив символов в строку? - PullRequest
0 голосов
/ 08 апреля 2019

Я хочу прочитать входной поток с буфером и добавить каждый буфер в строку, пока поток не станет пустым.

char[] buffer = new char[32];

while ((bytesRead = streamReader.read(buffer, 0, 32)) != -1)
   message += new String(buffer);

Я не смог найти метод String для непосредственного добавления массива символов и выбрал это. Есть ли способ узнать, тратит ли это циклы, копируя массив символов в новую строку, только чтобы сразу же отбросить его?

Это может быть преждевременной оптимизацией, но она довольно ярко на меня смотрит.

Я считаю, что этот конструктор вызывает Arrays.copyOf().

1 Ответ

1 голос
/ 08 апреля 2019

номер

Есть более эффективные способы. Использование java.util.StringBuilder в вашем цикле более эффективно, поскольку оно выполняет ряд операций. В вашем цикле + = будет каждый раз создавать новый объект String. Например, если бы вы сделали String d = a + b + c + d... для 1_000_000 строк, то вы бы стали 1_000_000 объектами String как отходы. Строки неизменны.

Ссылка по теме:

Конкатенация строк: concat () против оператора "+"

Внешняя ссылка, но все еще связана https://dzone.com/articles/string-concatenation-performacne-improvement-in-ja

...