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

mat*_*boy 0 java string tokenize apache-commons guava

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

例:

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?".
Run Code Online (Sandbox Code Playgroud)

现在

  1. 我不确定这LinkedList是最有效的集合类(Apache Commons,Guava,他们可以帮忙吗?)!
  2. 我打算StringUtils从Apache Commons 使用,但该split方法返回一个数组!所以,我应该从一个for循环中提取由split返回的String对象数组中的字符串.这是有效的:我不知道,split创建一个阵列!
  3. Splitter从番石榴那里读到了,但这篇文章指出StringUtils在实践中更好.
  4. 怎么样ScannerJava.util.它似乎没有分配任何额外的数据结构.不是吗?

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

Lou*_*man 5

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

就是我这样做的方式.也就是说,几乎所有用例ArrayList都优于LinkedList; 如果没有进一步的数据,我们真的无法判断您是否处于极少数情况下的情况之一LinkedList.