ArrayList和Array之间的转换
- ArrayList转Array
(1):使用ArrayList的toArray方法。
1)当ArrayList中存放的是引用类型时(例如String),成功
/**
* 使用了ArrayList的toArray方法 ,ArrayList里存放的是String(引用类型)
*/
@Test
public void list2Array1() {
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
Object[] array = arrayList.toArray(new String[3]);
for (Object o : array) {
System.out.println(o);
}
}
输出为:
[1, 2, 3]
2) 当ArrayList中存放的是基本数据类型时(例如int),成功
/**
* 使用了ArrayList的toArray方法 , ArrayList里存放的是int(基本数据类型)
*/
@Test
public void list2Array2() {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
Object[] array = arrayList.toArray();
System.out.println(Arrays.toString(array));
}
输出为:
[1, 2, 3]
- Array转ArrayList
(1):使用Arrays的asList方法。
1)当Array中存放的是引用类型时(例如String),成功
/**
* 使用Arrays的asList方法,Array中存放的String(引用类型)
*/
@Test
public void array2List1() {
String[] stringArray = new String[] { "1", "2", "3" };
List<String> list = Arrays.asList(stringArray);
System.out.println(list);
}
输出为:
[1, 2, 3]
2) 当Array中存放的是基本数据类型时(例如int),不成功
/**
* 使用Arrays的asList方法,Array中存放int(基本类型)
*/
@Test
public void array2List2() {
int[] intArray = new int[] { 1, 2, 3 };
List<int[]> intList = Arrays.asList(intArray);
System.out.println(intList.size());
for (int[] is : intList) {
System.out.println(Arrays.toString(is));
}
}
输出为:
[[I@14514713]
List的长度为 : 1
[1, 2, 3]
这个问题解决的方法就是将int[]换成Integer[],这样内容就成了对象数组(即引用类型)。
/**
* 使用Arrays的asList方法,Array中存放int(基本类型)
*/
@Test
public void array2List3() {
Integer[] integerArray = { 1, 2, 3 };
List<Integer> intList = Arrays.asList(integerArray);
System.out.println(intList);
System.out.println("List的长度为 : " + intList.size());
for (Integer is : intList) {
System.out.println(is);
}
}
输出为:
[1, 2, 3]
List的长度为 : 3
1
2
3
参考文献: