将字符串的ArrayList拆分为另一个StringArray,返回类型为List,而不是void

时间:2018-10-17 06:14:48

标签: java string loops arraylist return

当给定另一个字符串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的形式返回。

任何帮助都会很棒!

3 个答案:

答案 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());
}