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

Java 将字符串的ArrayList拆分为另一个字符串的ArrayList,返回类型为列表,而不是void,java,string,loops,arraylist,return,Java,String,Loops,Arraylist,Return,当给定另一个字符串数组列表时,我的代码应该返回一个单词数组列表 例如: 输入: ["Hello there"] ["Hello","there"] 输出: ["Hello there"] ["Hello","there"] 到目前为止,我已经: public static List<String> stringToListOfWords(List<String> list ) { for(int i = 0; i &l

当给定另一个字符串数组列表时,我的代码应该返回一个单词数组列表

例如:

输入:

["Hello there"]
["Hello","there"]
输出:

["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);

        }
公共静态列表stringToListOfWords(列表列表)
{   

对于(int i=0;i您应该在循环之前创建一个
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;

}
公共静态列表stringToListOfWords(列表列表)
{   
List wordList=newarraylist();

对于(int i=0;i您应该在循环之前创建一个
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;

}
公共静态列表stringToListOfWords(列表列表)
{   
List wordList=newarraylist();

对于(inti=0;i如果您使用的是Java8,那么可以放弃循环,改用
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;
}
公共静态列表stringToListOfWords(列表列表){
List wordList=new ArrayList();
列表。forEach(项目->{
字符串[]temp=item.split(\\s+);
addAll(Arrays.asList(temp));
});
返回词表;
}
或者,如果你想使用流,这里有一个单行程序

public static List<String> stringToListOfWords(List<String> list) {
    return list.stream()
            .map(word -> word.split("\\s+"))
            .flatMap(Arrays::stream)
            .collect(Collectors.toList());
}
公共静态列表stringToListOfWords(列表列表){
return list.stream()
.map(word->word.split(\\s+))
.flatMap(数组::流)
.collect(Collectors.toList());
}

如果您使用的是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;
}
公共静态列表stringToListOfWords(列表列表){
List wordList=new ArrayList();
列表。forEach(项目->{
字符串[]temp=item.split(\\s+);
addAll(Arrays.asList(temp));
});
返回词表;
}
或者,如果你想使用流,这里有一个单行程序

public static List<String> stringToListOfWords(List<String> list) {
    return list.stream()
            .map(word -> word.split("\\s+"))
            .flatMap(Arrays::stream)
            .collect(Collectors.toList());
}
公共静态列表stringToListOfWords(列表列表){
return list.stream()
.map(word->word.split(\\s+))
.flatMap(数组::流)
.collect(Collectors.toList());
}

> p>可以考虑使用java 8的流:

public static List<String> stringToListOfWords(List<String> list){
    return list.stream()
               .flatMap(s -> Arrays.asList(s.split("\\s+")).stream())
               .collect(Collectors.toList());
}
公共静态列表stringToListOfWords(列表列表){
return list.stream()
.flatMap(s->Arrays.asList(s.split(\\s+)).stream())
.collect(Collectors.toList());
}

> p>可以考虑使用java 8的流:

public static List<String> stringToListOfWords(List<String> list){
    return list.stream()
               .flatMap(s -> Arrays.asList(s.split("\\s+")).stream())
               .collect(Collectors.toList());
}
公共静态列表stringToListOfWords(列表列表){
return list.stream()
.flatMap(s->Arrays.asList(s.split(\\s+)).stream())
.collect(Collectors.toList());
}


如果
ArrayList wordList
是在一些大括号内声明的,并且不是从大括号内返回的,那么它将超出范围尝试读取java中OOP的多态性:-)如果
ArrayList wordList
是在一些大括号内声明的,并且不是从大括号内返回的,那么它将超出范围,在java中读取OOP的多态性:-)哇,谢谢你的建议,我认为我的错误比它需要的复杂得多!有没有理由不写
I@statefi这两个都是等效的。我同意OP的选择,因为它没有错。@TimBiegeleisen这不是问题,所以我认为没有必要这么做。哇,谢谢你的建议,我认为我的iStoke比它需要的复杂得多!有没有理由不写
i@statefi这两个都是等效的。我选择了OP,因为它没有错。@TimBiegeleisen这不是问题,所以我认为没有必要这么做。这并没有多大改变。干得好+1,但建议添加到n来自流中的现有列表?@TimBiegeleisen我不知道它是否推荐,但我已经编辑了我的答案,现在它不应该添加到现有列表中。它确实没有多大变化。很好+1,但建议从流中添加到现有列表中吗?@TimBiegeleisen我不知道它是否推荐,但我已经编辑了我的answer,现在它不应该添加到现有的列表中。您好,您能告诉我为什么您决定使用flatmap,然后流式处理它,而不是像我的答案那样使用常规映射和平面映射吗?@Rab As
s.split(\\s+”)
返回一个
字符串[]
我决定把它做成一条流,然后把它变平,把它从一条流变成一条流。但是现在我看到了你的答案。我觉得它更优雅!更容易理解!嗨,你能告诉我为什么你决定使用平面图然后流,而不是像我的答案那样使用普通的地图和平面图吗?@Rab As
 s.split(“\\s+”)
返回一个
字符串[]
我决定将其制作成一个流,然后将其平面化,将其从一个流更改为一个流。但是现在我看到了您的答案。对我来说,它似乎更优雅了!更容易理解!