Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的字符串解析与解码_Java_String - Fatal编程技术网

java中的字符串解析与解码

java中的字符串解析与解码,java,string,Java,String,我们需要对长数据流进行解码 每个数据段都是一个由编码序列组成的长字符串,由分隔符分隔。 每个序列都是由编码密钥组成的 编码的“键”和它们的字符等价物之间的映射是单独维护的。 想法是在地图上查找每个键;并替换为相应的字母表 实现这一目标的最有效方式是什么 子字符串和替换是否是这样处理流的正确方法? 或者我们有更高性能的替代方案吗?因为这看起来像是一个家庭作业,所以我会给你一个大概的想法,让你自己制定实现方案 最合理的方法是使用StringBuilder,在其中构建输出。逐个令牌解析输入令牌。对于每

我们需要对长数据流进行解码

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

编码的“键”和它们的字符等价物之间的映射是单独维护的。 想法是在地图上查找每个键;并替换为相应的字母表

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

子字符串和替换是否是这样处理流的正确方法?
或者我们有更高性能的替代方案吗?

因为这看起来像是一个家庭作业,所以我会给你一个大概的想法,让你自己制定实现方案

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


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

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

使用
StringTokenizer
按分隔符拆分来处理传入数据


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

,因为每次修改字符串时都会生成一个新字符串,如果要执行许多小字符串操作,请使用
StringBuilder
char[]
来提高性能。映射应该很好,映射对于
get
来说是非常高的性能。直接写入输出流意味着什么?stringbuilder输出怎么能这样写?