当给定另一个字符串Arraylist时,我的代码应该返回单词的Arraylist。
例如:
输入:
["Hello there"]
输出:
["Hello","there"]
到目前为止,我有:
public static List<String> stringToListOfWords(List<String> list )
{
for(int i = 0; i <= list.size() - 1; i++)
{
String[] temp = (list.get(i).split("\\s+"));
ArrayList<String> wordList = new ArrayList<String>(Arrays.asList(temp));
}
return(wordList);
}
我尝试在for循环中移动wordList,但是随后出现错误消息,指出返回类型错误。当返回类型为void
时,我可以使用它,但是我需要它以list
的形式返回。
任何帮助都会很棒!
答案 0 :(得分:3)
您应该在循环之前创建一个ArrayList
,并在循环中添加所有单词:
public static List<String> stringToListOfWords(List<String> list )
{
List<String> wordList = new ArrayList<> ();
for(int i = 0; i <= list.size() - 1; i++) {
String[] temp = list.get(i).split("\\s+");
wordList.addAll(Arrays.asList(temp));
}
return wordList;
}
答案 1 :(得分:2)
如果您使用的是Java 8,则可以删除循环并改用forEach
public static List<String> stringToListOfWords(List<String> list) {
List<String> wordList = new ArrayList<>();
list.forEach(item->{
String[] temp = item.split("\\s+");
wordList.addAll(Arrays.asList(temp));
});
return wordList;
}
或者,如果您想使用Streams,这里是一个班轮
public static List<String> stringToListOfWords(List<String> list) {
return list.stream()
.map(word -> word.split("\\s+"))
.flatMap(Arrays::stream)
.collect(Collectors.toList());
}
答案 2 :(得分:2)
您可以考虑使用Java 8或更高版本的流:
public static List<String> stringToListOfWords(List<String> list){
return list.stream()
.flatMap(s -> Arrays.asList(s.split("\\s+")).stream())
.collect(Collectors.toList());
}