我们需要解码长流数据流。
每条数据都是一个包含编码序列的长字符串,由分隔符分隔。 每个序列都由编码密钥组成。
编码的“密钥”与其字符等价物之间的映射是分开维护的。 这个想法是在地图中查找每个键;并替换为相应的字母。
实现这一目标的最有效方法是什么。
是一个子字符串并替换正确处理流的方式吗? 或者我们有更高绩效的替代方案?
答案 0 :(得分:1)
由于这看起来像是家庭作业,我会给你一个大致的想法,让你自己完成实现。
最合理的方法是使用StringBuilder
来构建输出。通过令牌解析输入令牌。对于每个令牌,在地图中查找它的键并将值附加到StringBuilder
。完成后,输出字符串生成器的内容。
注意:如果您的字符串非常长(许多MB或GB),只需直接写入输出流。
答案 1 :(得分:0)
长串中的许多重复替换将是非常低效的。正如你所说输入是“流动的”,所以你不应该一次读取所有输入广告处理,而应该通过较小的块读取和处理,我认为缓冲区是缓冲区。
使用StringTokenizer
处理传入数据,以分隔符进行拆分。
对于每个传入令牌,执行替换,如果可能,直接将其写入输出流,或者附加到StringBuilder
。