Java 拆分不带字符串的StringBuilder值。拆分()
我将处理文本,并将其拆分为一个,它的子字符串位于正则表达式上,就像这样。考虑到速度方面的问题,我希望在上做这些 据我所知,StringBuilder没有这样的方法。我所能做的就是调用并将结果转换为[]。 然而,这会很慢——实习生它生成的字符串[]的每个条目 而且-不是覆盖的。当我需要在集合中用作类型时, 我正在编写一个具有值字段的包装器类,并重写该字段的值以使其正确 到目前为止,我还记得我需要这两个,但这两个都很短 我的问题是: 我在这里遗漏了什么吗?有没有一种方法可以在不使用字符串的情况下启动这些功能,从而降低速度 如果没有-为什么没有?使用的主要原因是以内存为代价的执行时间——作为字符串高效内存的替代,执行速度较慢(?) 是一种文本类型。为什么它不直接用这些--一个split()呢Java 拆分不带字符串的StringBuilder值。拆分(),java,regex,string,split,stringbuilder,Java,Regex,String,Split,Stringbuilder,我将处理文本,并将其拆分为一个,它的子字符串位于正则表达式上,就像这样。考虑到速度方面的问题,我希望在上做这些 据我所知,StringBuilder没有这样的方法。我所能做的就是调用并将结果转换为[]。 然而,这会很慢——实习生它生成的字符串[]的每个条目 而且-不是覆盖的。当我需要在集合中用作类型时, 我正在编写一个具有值字段的包装器类,并重写该字段的值以使其正确 到目前为止,我还记得我需要这两个,但这两个都很短 我的问题是: 我在这里遗漏了什么吗?有没有一种方法可以在不使用字符串的情况下启动
蒂亚 StringBuilder也是一个CharSequence
Pattern pattern = Pattern.compile(",\\s*"); // Best static final.
Matcher m = pattern.matcher(stringBuilder);
int pos0 = 0;
while (m.find()) {
int pos1 = m.start();
CharSequence cs = stringBuilder.subSequence(pos0, pos1);
...
pos0 = pos1;
}
CharSequence cs = stringBuilder.subSequence(pos0, stringBuilder.length());
...
当然,s
不是字符序列就是字符串。字符串可以利用不分配新字符数组的String.substring
正则表达式仍然很慢。这将通过实习,看起来还可以。当reg.expression只有1个字符时,String.split()的实现速度更快。你知道为什么StringBuilder在这些方面是“苗条”的吗?一个是equals(),一个是equals(),一个是equals(),一个是equals(),一个是equals(),一个是equals()。阅读我关于使用StringBuilder作为集合中条目类型的文章。StringBuilder很可能对其文本条目的值很有用。但是,它的equals()是根据内存引用“判断”实例,而不是文本值。这就像java.lang.Integer没有覆盖equals一样——幸运的是事实并非如此。是的,尽管有几个StringBuilder,可能用equals包装在自己的类中,似乎没有必要。如果
s
是一个字符串,那么子字符串会很好地(快速且紧凑)。我不理解你最后的评论。substring()返回字符串并将其保留。实习是在运行时减慢字符串速度的事情。在集合中如何使用StringBuilder,比如说HashMap,而不使用适当的equals()来处理它?