本帖最后由 dawei 于 2016-2-28 13:47 编辑
Arrays工具类的asList(T ... t):将数组转成集合(该方法用的可变参数)
注意:
1)返回一个长度固定的集合 可以改和查 不能增和删,也就是改变其长度的操作都不可以做
2)将数组转换成集合,数组必须是引用数据类型
代码演示:
public static void demo2() {
/*
int[] arr = {11,22,33,44,55};
List<int[]> list = Arrays.asList(arr); //基本数据类型的数组转换成集合,会将整个数组当作一个对象转换
System.out.println(list); //[[I@1833eca]
*/
Integer[] arr = {11,22,33,44,55}; //将数组转换成集合,数组必须是引用数据类型
List<Integer> list = Arrays.asList(arr);
//list.add(66); //编译不报错 ,运行报错
java.lang.UnsupportedOperationException
//list.remove(55); //编译不报错 ,运行报错
java.lang.UnsupportedOperationException
list.set(0,66); //不报错,不改变其长度的操作 可以执行
System.out.println(list.get(0)); //66 不报错,不改变其长度的操作 可以执行
System.out.println(list); //[66,22,33,44,55]
}
Collection中toArray(T[] a)泛型版的集合转数组:T[] 明确成什么样的数组 toArray(T[] a)方法就返回什么类型的数组
注意:当集合转换数组时,数组长度如果是小于等于集合的size时,转换后的数组长度等于集合的size
如果数组的长度大于了size,分配的数组长度就和你指定的长度一样
代码演示:
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
//不加泛型的toArray() 只能返回Object[]
Object[] objs = list.toArray();
for (Object obj : objs) {
System.out.println(obj);
}
//如果想指定返回数组的类型 请用加泛型的集合转数组
String[] arr = list.toArray(new String[list.size()]); //参数传入什么类型的数组 就返回什么类型的数
组
//当集合转换数组时,数组长度如果是小于等于集
合的size时,转换后的数组长度等于集合的size
//如果数组的长度大于了size,分配的数组长度就
和你指定的长度一样
for (String string : arr) {
System.out.println(string);
}
}
|
|