2014-09-02 290 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(" ")))

相關問題