2017-06-15 60 views
0

我有两个数组列表namesArrayList1namesArrayList2,每个都包含值。Java - ArrayList/Array

我的问题是如何把两个数组列表放在一个数组中allNames[]

+1

你尝试过什么了吗? –

+0

还没有找到答案 – RealDEV

回答

5

从现有列表1

List<String> allList = new ArrayList<>(namesArrayList1) 

一个新的列表添加其他所有

allList.addAll(namesArrayList2); 

转换为数组

String[] allArray = allList.toArray(new String[]{}); 
-1

我发现了一个很好的Apache Commons Lang库的单行解决方案。

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

代码:

String[] both = (String[])ArrayUtils.addAll(first, second); 

,或者您可以使用此代码

int[] array1and2 = new int[namesArrayList1.length + namesArrayList2.length]; 
System.arraycopy(namesArrayList1, 0, array1and2, 0, namesArrayList1.length); 
System.arraycopy(namesArrayList2, 0, array1and2, namesArrayList1.length, namesArrayList2.length); 

这无论namesArrayList1和namesArrayList2的大小会奏效。

0

只需使用System.arraycopy()

String[] allNames = new String[namesArrayList1.size() + namesArrayList2.size()]; 
System.arraycopy(namesArrayList1.toArray(), 0, allNames, 0, namesArrayList1.size()); 
System.arraycopy(namesArrayList2.toArray(), 0, allNames, namesArrayList1.size(), namesArrayList2.size()); 

实施例:

List<String> list1 = new ArrayList<>(); 
list1.add("aa"); 
list1.add("bb"); 
list1.add("cc"); 
list1.add("dd"); 
List<String> list2 = new ArrayList<>(); 
list2.add("ee"); 
list2.add("ff"); 
list2.add("gg"); 
list2.add("jj"); 

String[] allNames = new String[list1.size() + list1.size()]; 
System.arraycopy(list1.toArray(), 0, allNames, 0, list1.size()); 
System.arraycopy(list2.toArray(), 0, allNames, list1.size(), list2.size()); 

for (String all : allNames) { 
    System.out.print(all+ " "); 
} 

输出:

aa bb cc dd ee ff gg jj