我正在寻找一种有效的方法来获取从多个字符串中提取的字符串标记列表(例如使用空格分隔符)。
示例:
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?".
现在
- 我不确定
LinkedList
是最有效的集合类(Apache Commons、Guava,它们可以提供帮助吗?)! - 我本来打算使用 Apache Commons 中的
StringUtils
,但是split
方法返回一个数组!因此,我应该使用 for 循环从 split 返回的 String 对象数组中提取字符串。是否高效:我不知道,split
创建一个数组! - 我从 Guava 读到了有关
Splitter
的内容,但是 this post指出StringUtils
在实践中效果更好。 Java.util
中的Scanner
怎么样。它似乎没有分配任何额外的数据结构。不是吗?
请绘制最有效的 Java 解决方案,即使使用其他广泛使用的库,例如 Guava 和 Apache 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/