0

我们需要解码长的数据流。

每条数据都是一个长字符串,由编码序列组成,由分隔符分隔。每个序列都是由编码的密钥组成的。

编码的“键”和它们的等效字符之间的映射是单独维护的。这个想法是查找地图中的每个键;并用相应的字母替换。

实现这一目标的最有效方法是什么。

是子字符串并替换处理流的正确方法吗?还是我们有更高性能的替代方案?

4

2 回答 2

1

由于这看起来像一个家庭作业,我会给你一个大致的想法,让你自己制定实现。

最合理的方法是StringBuilder在其中构建输出。按令牌解析您的输入令牌。对于每个令牌,在您的地图中查找它的键并将值附加到您的StringBuilder. 完成后,输出字符串生成器的内容。

注意:如果您的字符串非常长(很多 MB 或 GB),只需直接写入输出流即可。

于 2013-04-13T04:10:52.283 回答
0

长字符串中的许多重复替换将非常低效。正如你所说的输入是“流动的”,所以不是一次读取所有输入广告处理,你应该阅读和处理更小的块,我想一个缓冲区一个缓冲区。

使用 a 处理传入数据StringTokenizer,按分隔符拆分。

对于每个传入的令牌,执行替换,如果可能,直接将其写入输出流,或者附加到StringBuilder.

于 2013-04-13T04:51:51.380 回答