首先我有两个字符串。
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]
除了编写循环以解决此问题之外,还有其他更短的方法吗?
答案 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(" ")))