java - 在 Java 中从多个字符串构建标记列表的有效方法

标签 java string guava tokenize apache-commons

我正在寻找一种有效的方法来获取从多个字符串中提取的字符串标记列表(例如使用空格分隔符)。

示例:

String s1 = "My mom cook everyday";
String s2 = "I eat everyday";
String s3 = "Am I fat?";  
LinkedList<String> tokens = new LinkedList<String>();   
//any code to efficiently get the tokens

//final result is tokens  make of a list of the following tokens:
//"My", "mom", "cook", "everyday", "I", "eat", "everyday", "Am", "I", "fat?".

现在

  1. 我不确定 LinkedList 是最有效的集合类(Apache Commons、Guava,它们可以提供帮助吗?)!
  2. 我本来打算使用 Apache Commons 中的 StringUtils,但是 split 方法返回一个数组!因此,我应该使用 for 循环从 split 返回的 String 对象数组中提取字符串。是否高效:我不知道,split 创建一个数组!
  3. 我从 Guava 读到了有关 Splitter 的内容,但是 this post指出 StringUtils 在实践中效果更好。
  4. Java.util 中的 Scanner 怎么样。它似乎没有分配任何额外的数据结构。不是吗?

请绘制最有效的 Java 解决方案,即使使用其他广泛使用的库,例如 GuavaApache Commons

最佳答案

for (String str : Arrays.asList(s1, s2, s3)) {
  Iterables.addAll(tokens, Splitter.on(' ').split(str));
}

这就是我会做的方式。也就是说,对于几乎所有用例,ArrayList 都优于 LinkedList;如果没有进一步的数据,我们真的无法判断您是否处于那种罕见的情况下,LinkedList 更可取。

关于java - 在 Java 中从多个字符串构建标记列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15905182/

相关文章:

java - 在 Java 中比较对象的更优雅的方式

java - JSON Stream 解析在对象末尾崩溃

java - 在 Java 中实现 Vector 类的构造函数签名问题

java - 如何添加一个扩展JPanel的类,并显示自己的面板和按钮?

java - 包含 Xpath 中的函数

java - 按值对 AtomicLongMap 进行排序

java - 将格式化字符串解析为多次具有相同键的映射?

java - 如何从 firebaserecycleradapter 上的 firebase 数据库中获取数据单击

string - 液体字符串中的转义字符

c++ - 如何比较两个不同文本文件中的两个不同字符串?