将列表中的元素添加到另一个列表中

时间:2014-09-02 14:14:54

标签: java arraylist

首先我有两个字符串。

String name = "my name is";
String address = "my address is";

然后我想分开这个名字'字符串值来自空格字符并添加到列表中。

List word_list = new ArrayList();
word_list.add(Arrays.asList(name.split(" ")));

然后同样我想分割地址'字符串值并添加到相同的' word_list'。

word_list.add(Arrays.asList(address.split(" ")));

最后,我得到的是,

[[my, name, is],  [my, address, is]]

但我想要的是,

[my, name, is, my, address, is]

除了编写循环以解决此问题之外,还有其他更短的方法吗?

3 个答案:

答案 0 :(得分:2)

您需要addAll

word_list.addAll(Arrays.asList(name.split(" ")));
word_list.addAll(Arrays.asList(address.split(" ")));

add将参数视为要添加到列表中的单个元素。 addAll期望将Collection个元素添加到列表中。

顺便说一句,如果您将列表定义为List<String> word_list = new ArrayList<String>();,则编译器会阻止您以add作为参数调用List

答案 1 :(得分:0)

有一个能够做你想要的功能:

public String[] mergeArrays(String[] mainArray, String[] addArray) {
    String[] finalArray = new String[mainArray.length + addArray.length];
    System.arraycopy(mainArray, 0, finalArray, 0, mainArray.length);
    System.arraycopy(addArray, 0, finalArray, mainArray.length, addArray.length);

    return finalArray;
}

顺便说一下,Apache Commons Lang Lib有一个单行函数来做到这一点:

[ArrayUtils.addAll(T\[\], T...)][1]

答案 2 :(得分:0)

您的代码中存在两个问题。

  • 您的word_list不是通用的。您应该声明并初始化为:

List<String> word_list = new ArrayList<String>();

...或者可选择使用Java 7中的菱形语法:

List<String> word_list = new ArrayList<>();

通过这种方式,您可以确保类型安全,例如编译时检查内容(我们需要String s)。

  • 由于您的List不是通用的,因此需要Object。在这种情况下,您add List<String>而不是String

相反,请使用word_list.addAll(Arrays.asList(name.split(" ")))