Arrays.asList使用

来源:互联网 发布:爱普生手机打印软件 编辑:程序博客网 时间:2024/05/18 14:46
将一个数组转化为一个List对象,一般会想到Arrays.asList()方法,这个方法会返回一个ArrayList类型的对象。但这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类,继承了java.util.AbstractList这个类,存储数组元素的a变量是final类型的,由此判断,这个静态内部类是不能做任何内部元素的添加、更新、删除操作,否则就会报UnsupportedOperationException异常。如果是想将一个数组转化成一个列表并做增加删除操作的话,建议代码如下:
List<String> levelList = new ArrayList<String>(Arrays.asList("a", "b", "c"));  
JDK 1.4对java.util.Arrays.asList的定义,函数参数是Object[]。所以,在1.4中asList()并不支持基本类型的数组作参数。
JDK 1.5中,java.util.Arrays.asList的定义,函数参数是Varargs, 采用了泛型实现。同时由于autoboxing的支持,使得可以支持对象数组以及基本类型数组。但基本类型是不能作为范型的参数,当传入基本数据类型的数组时,会出现小问题,会把传入的数组整个当作返回的List中的第一个元素:
System.out.println(Arrays.asList(Arrays.asList(new int[]{1,2}))); 

下面我们看一下实例:

package cn.slimsmart.test;import java.util.ArrayList;import java.util.Arrays;public class ArraysTest {public static void main(String[] args) {//[a, b]System.out.println(Arrays.asList(new String[]{"a","b"}));//[a, b]System.out.println(Arrays.asList("a","b"));//[obj, c]System.out.println(Arrays.asList(new String[]{"a","b"},"c"));//[obj]System.out.println(Arrays.asList(new int[]{1,2}));//[1, 2]System.out.println(Arrays.asList(1,2));//[obj, 3]System.out.println(Arrays.asList(new int[]{1,2},3));//[1, 2]System.out.println(Arrays.asList(new Integer[]{1,2}));//[obj, 3]System.out.println(Arrays.asList(new Integer[]{1,2},3));}}
输出:

[a, b] [a, b] [[Ljava.lang.String;@67f1fba0, c] [[I@3fbefab0] [1, 2] [[I@5f186fab, 3] [1, 2] [[Ljava.lang.Integer;@3d4b7453, 3]

0 0
原创粉丝点击