数组与List的相互转换

来源:互联网 发布:windows win7 ios系统 编辑:程序博客网 时间:2024/06/05 13:22

1.List转换为数组

直接调用ArrayList中的toArray方法就可以实现。

List接口中,toArray有两个重载的方法:

Object[] toArray();<T> T[] toArray(T[] a);

可见toArray可以用无入参的方式调用,返回一个Object数组;也可以用指定返回类型的方式调用,返回一个指定类型的数组。

    @Test    public void test() {        List<Object> rawList = new ArrayList();        rawList.add("0");        rawList.add("1");        String[] arr = rawList.toArray(new String[rawList.size()]);        for(String each:arr) {            System.out.println(each);        }    }

2.数组转换为List

如果需要将数组转为List,只需要使用Arrays.asList方法即可。

    @Test    public void t5() {        String[] arr = {"a","b","c"};        List<String> list = Arrays.asList(arr);        list.forEach(x -> System.out.println(x));    }

需要注意的是,asList方法是利用传入参数的类型去创建一个数组,本质上还是一个只是实现了集合的如下方法(size()、toArray()、toArray(T[])、get(int)、set(int,E)、indexOf(Object)、contains(Object))的数组,所以用asList()装换成的集合,只能使用如上方法,如果使用其他方法如: add(E),系统将会抛Java.lang.UnsupportedOperationException(不支持请求的操作)的异常。

    public static <T> List<T> asList(T... a) {        return new ArrayList<>(a);    }    /**     * @serial include     */    private static class ArrayList<E> extends AbstractList<E>        implements RandomAccess, java.io.Serializable
0 0
原创粉丝点击