【问题标题】:What is a preferred method to get stream of tokens from a string?从字符串中获取令牌流的首选方法是什么?
【发布时间】:2020-07-06 07:24:56
【问题描述】:

我们有一个用空格分隔的数字或单词的长字符串。 我们需要得到它们的流。首选方法是什么?

我知道两种选择:

  1. 数组(str.split(“”)).stream();
  2. new Scanner(str).tokens();

两者都返回字符串流。 哪个选项更好?

还有其他方法吗?

【问题讨论】:

  • 我会选择流。我不想打开一个新的扫描仪。
  • 在参考实现中,Scanner(String) 构造函数没有利用这已经是内存中String 的事实,而是创建了一个StringReader,遵循与从外部源。换句话说,它非常低效。除了这个不鼓励的新选项之外,它与 How to split a String into a Stream of Strings? 的问题相同

标签: java split java-stream token


【解决方案1】:

两者都有效,但不确定性能。 另一种选择是使用 StringTokenizer:

Collections.list(new StringTokenizer(str)).stream()

它提供了更多自定义令牌的方法。

编辑:不需要传递空白分隔符,因为它是默认值。

【讨论】:

  • 我知道 StringTokinizer 但从不使用它。还是真实的吗?它来自 Java 1.0。无论如何,感谢您提供另一种方法!
  • JavaDoc 明确指出:StringTokenizer 是一个遗留类,出于兼容性原因保留,但不鼓励在新代码中使用它。建议任何寻求此功能的人使用Stringsplit 方法或java.util.regex 包。
  • 感谢@AlexRudenko 的提醒,我会更新你的评论。
猜你喜欢
  • 1970-01-01
  • 2019-05-06
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
相关资源
最近更新 更多