Более быстрые альтернативы для замены метода в Строке Java?

Что-то вроде этого может быть:

var csv = @"A, 22, 23, 12
B, 32, 4, 33
C, 34, 3 ,33";

var lines =
    csv.Split('\n').Select(x => x.Split(',').Skip(1).Select(n => int.Parse(n))).Select(x => new {Sum = x.Sum(), Average = x.Average()});
foreach (var line in lines)
{
    Console.WriteLine("Sum: " + line.Sum);
    Console.WriteLine("Average: " + line.Average);
}

В общем, я не предлагаю делать что-то подобное. Вы должны использовать полнофункциональный CSV-ридер для анализа CSV-файла, и вам следует включить обработку ошибок.

14
задан mtk 6 July 2012 в 10:33
поделиться

4 ответа

Это то, для чего предназначен StringBuilder . Если вам предстоит много манипуляций, сделайте это на StringBuilder , а затем превратите его в String всякий раз, когда вам нужно.

StringBuilder - это описывается так:

«Изменяемая последовательность символов. Этот класс предоставляет API, совместимый со StringBuffer, но без гарантии синхронизации».

Он имеет replace append ], вставить , удалить и др.), И вы можете использовать toString , чтобы преобразовать его в реальную строку .

22
ответ дан 1 December 2019 в 06:35
поделиться

The previous posts are right, StringBuilder/StringBuffer are a solution.

But, you also have to question if it is a good idea to do the replace on big Strings in memory.

I often have String manipulations that are implemented as a stream, so instead of replacing it in the string and then sending it to an OutputStream, I do the replace at the moment that I send the String to the outputstream. That works much faster than any replace.

This works much faster if you want this replace to implement a template mechanism. Streaming is always faster since you consume less memory and if the clients is slow, you only need to generate at a slow pace - so it scales much better.

8
ответ дан 1 December 2019 в 06:35
поделиться

Все операции со строками в целом очень медленные. Подумайте об использовании StringBuffer, он не совсем похож на класс String, но имеет много общего, а также изменяемый.

0
ответ дан 1 December 2019 в 06:35
поделиться

Я согласен с вышеизложенным. Используйте StringBuffer для обеспечения безопасности потоков и StringBuilder при работе с отдельными потоками.

5
ответ дан 1 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: