我看到了一个问题:从数组中创建ArrayList
但是,当我使用以下代码尝试该解决方案时,它并不适用于所有情况:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class ToArrayList {
public static void main(String[] args) {
// this works
String[] elements = new String[] { "Ryan", "Julie", "Bob" };
List<String> list = new ArrayList<String>(Arrays.asList(elements));
System.out.println(list);
// this works
List<Integer> intList = null;
intList = Arrays.asList(3, 5);
System.out.println(intList);
int[] intArray = new int[] { 0, 1 };
// this doesn't work!
intList = new ArrayList<Integer>(Arrays.asList(intArray));
System.out.println(intList);
}
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?代码不应该intList = new ArrayList<Integer>(Arrays.asList(intArray));编译得很好吗?
我有以下简单的测试用例
@Test
public void testArraysAsList() {
Character[] chars1 = new Character[]{'a', 'b'};
System.out.println(Arrays.asList(chars1).size());
char[] chars2 = new char[]{'a', 'b'};
System.out.println(Arrays.asList(chars2).size());
}
Run Code Online (Sandbox Code Playgroud)
结果是:2 1
我不明白Arrays.asList(chars2),为什么要Arrays.asList(char[])制作一个单一的列表,元素为char [].
使用java.util.Arrays.asList,为什么它显示int(原始类型)和String数组的不同列表大小?
a)对于int数组,每当我执行以下程序时,List size = 1
public static void main(String[] args) {
int ar[]=new int[]{1,2,3,4,5};
List list=Arrays.asList(ar);
System.out.println(list.size());
}
Run Code Online (Sandbox Code Playgroud)
b)但是,如果我从int数组类型更改为String数组(如String ar[] = new String[]{"abc","klm","xyz","pqr"};),那么我将列表大小设置为4,我认为是正确的.
PS:使用Integer(Wrapper Class)数组,结果很好,但我不知道为什么在原始int数组中,列表大小为1.请解释.