摆脱ArrayList中的空元素

时间:2018-03-30 16:34:03

标签: java

我已经在这个问题上工作了一段时间,我仍然难过。

我应该编写一个方法口吃,它以ArrayList<String>作为参数,用每个字符串中的两个替换每个字符串。例如,如果列表在调用方法之前存储值{"how", "are", "you?"},则它应该在方法执行完毕后存储值{"how", "how", "are", "are", "you?", "you?"}

但是尽管我付出了最大的努力,我仍然无法摆脱我代码中的空元素。

非常感谢任何帮助。

public static ArrayList<String> stutter(ArrayList<String> lst) {
    ArrayList<String> list = new ArrayList<String>();
    int size    = lst.size();
    int intSize = lst.size();
    int inSize  = lst.size();
    int size4   = list.size();
    if (lst.size() == 0) {
       lst.clear();
    } else {
        for (int x = 0; x < size; x++) {
            for (int i = 0; i < 2; i++) {
                lst.add(lst.get(x));
            }
        }
        for (int x = 0; x < intSize ; x++) {
            lst.set(x,"");
        }
        for (int x = inSize - 1; x < size; x++) {
            String oldInfo = lst.get(x);
            list.add(oldInfo);
        }
        list.removeAll("",null);
    }
    return list; 
}

3 个答案:

答案 0 :(得分:4)

尝试这种方法:

public void duplicate(final List<String> inputList) {

        final List<String> temp = new ArrayList<>();
        inputList.forEach(element -> {
            temp.add(element);
            temp.add(element);
        });

        inputList.clear();
        inputList.addAll(temp);

}

基本上我在这里做的是:另一个名为temp的列表用于存储初始列表中的每个元素2次。之后,我只需清理初始列表并添加新内容。

您可以只返回clear而不是addAlltemp - 它包含您需要的数据。但是在这种情况下,不要忘记将方法返回类型从void更改为List<String>

快乐编码:)

答案 1 :(得分:0)

试试这个

public static ArrayList<String> stutter(ArrayList<String> lst) {
        ArrayList<String> list = new ArrayList<String>();
        if (!lst.isEmpty()) {
            for (String string : lst) {
                list.add(string);
                list.add(string);
            }
        }
        return list;
    }
}

这可以做你需要的,它基本上是检查列表,如果不是空的,并复制列表中的字符串

答案 2 :(得分:0)

跟进已经很好的答案,这是我保留原始样本方法签名的例子:

import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

public class Stutter {
    public static List<String> stutter(final List<String> words) {
        // Create the response array.
        List<String> response = new ArrayList<>();
        // Check for valid arguments. If not, return empty array of words.
        if (words == null || words.size() <= 0) {
            return response;
        }   
        // Iterate over the words that were passed in.
        for (final String word : words) {
            // Add the words twice to the response.
            response.add(word);
            response.add(word);
        }
        // The stutter response.
        return response;
    }
    public static void main(final String[] args) {
        final String[] myWords = { "hello", "world" };
        final List<String> myStutterWords = stutter(new ArrayList<>(Arrays.asList(myWords)));
        for (final String s : myStutterWords) {
            System.out.println(s);
        }
    }
}