当前位置: 首页 > 面试题库 >

Java拆分字符串性能

赵晟睿
2023-03-14
问题内容

这是我的应用程序中的当前代码:

String[] ids = str.split("/");

在对应用程序进行性能分析时,我注意到用于拆分字符串的时间不可忽略。

我还了解到,split实际上需要一个正则表达式,这对我来说毫无用处。

所以我的问题是, 我可以使用哪种替代方法来优化字符串拆分? 我见过,StringUtils.split但是速度更快吗?

(我会尝试并测试自己,但是对我的应用程序进行性能分析需要花费很多时间,因此,如果有人已经知道答案,那么可以节省一些时间)


问题答案:

String.split(String)如果您的模式只有一个字符长,则不会创建正则表达式。当按单个字符分割时,它将使用非常有效的专用代码。StringTokenizer在这种情况下,速度并不快。

这是在OpenJDK7 /
OracleJDK7中引入的。这是一个错误报告和一个commit。我在这里做了一个简单的基准测试。

$ java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

$ java Split
split_banthar: 1231
split_tskuzzy: 1464
split_tskuzzy2: 1742
string.split: 1291
StringTokenizer: 1517


 类似资料:
  • 问题内容: 使用功能split拆分此String。这是我的代码: 当我尝试这样做时,spli只包含一个字符串。似乎Java在拆分时看不到“ ^”。有人知道如何用字母“ ^”分割此字符串吗? 编辑 解决了:P 问题答案: 这是因为需要一个正则表达式,而不是文字字符串。您必须转义,因为它在regex(字符串开头的锚点)中具有不同的含义。因此,拆分实际上是在第一个字符之前完成的,从而使您完整地返回了完整

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数

  • 问题内容: 为什么这段代码的第二行抛出? 尽管这可行: 我使用Java 7。 问题答案: 如果要分割成文字的点,则需要转义该点: 否则,你将在regex上拆分.,这意味着“任何字符”。 请注意在正则表达式中创建单个反斜杠所需的双反斜杠。 因为输入字符串只是一个点,所以得到一个,即”.”,这是一个边沿情况,当在点上分割时会产生一个空数组;从结果中删除所有尾随的空白,但是由于在点上分割点仅留下两个空白

  • 问题内容: 我无法从此字符串拆分值: 这是我当前的代码: | 输出量 预期产量 问题答案: 是正则表达式中的元字符。你需要对其进行转义:

  • 问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生

  • 问题内容: 我有一个名为的字符串,其形式像这样 。 我想使用:分隔符。 这样一来,单词将被拆分成自己的字符串,并将成为另一个字符串。 然后我只想使用2种不同的字符串来显示该字符串。 解决这个问题的最佳方法是什么? 问题答案: 你可能要删除第二个字符串的空格: 如果要用特殊字符(例如dot(。))分割字符串,则应在点之前使用转义字符\ 例: 还有其他方法可以做到这一点。例如,你可以使用类(来自):