Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 拆分不带字符串的StringBuilder值。拆分()_Java_Regex_String_Split_Stringbuilder - Fatal编程技术网

Java 拆分不带字符串的StringBuilder值。拆分()

Java 拆分不带字符串的StringBuilder值。拆分(),java,regex,string,split,stringbuilder,Java,Regex,String,Split,Stringbuilder,我将处理文本,并将其拆分为一个,它的子字符串位于正则表达式上,就像这样。考虑到速度方面的问题,我希望在上做这些 据我所知,StringBuilder没有这样的方法。我所能做的就是调用并将结果转换为[]。 然而,这会很慢——实习生它生成的字符串[]的每个条目 而且-不是覆盖的。当我需要在集合中用作类型时, 我正在编写一个具有值字段的包装器类,并重写该字段的值以使其正确 到目前为止,我还记得我需要这两个,但这两个都很短 我的问题是: 我在这里遗漏了什么吗?有没有一种方法可以在不使用字符串的情况下启动

我将处理文本,并将其拆分为一个,它的子字符串位于正则表达式上,就像这样。考虑到速度方面的问题,我希望在上做这些

据我所知,StringBuilder没有这样的方法。我所能做的就是调用并将结果转换为[]。 然而,这会很慢——实习生它生成的字符串[]的每个条目

而且-不是覆盖的。当我需要在集合中用作类型时, 我正在编写一个具有值字段的包装器类,并重写该字段的值以使其正确

到目前为止,我还记得我需要这两个,但这两个都很短

我的问题是:

我在这里遗漏了什么吗?有没有一种方法可以在不使用字符串的情况下启动这些功能,从而降低速度

如果没有-为什么没有?使用的主要原因是以内存为代价的执行时间——作为字符串高效内存的替代,执行速度较慢(?) 是一种文本类型。为什么它不直接用这些--一个split()呢


蒂亚

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()来处理它?