2014-09-02 195 views
0

首先我有两个字符串。将列表中的元素添加到另一个列表中

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

然后,我想从空格字符中拆分'name'字符串值并添加到列表中。

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] 

有任何短方法比写一个循环来解决这个问题的其他?

回答

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>();,编译器将阻止您以List作为参数调用add

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; 
} 

顺便说一句,阿帕奇共享郎库有一个行函数做到这一点:

[ArrayUtils.addAll(T\[\], T...)][1] 
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(" ")))

相关问题