Arrays.asList作用和使用注意事项

Arrays.asList作用

把数组转换为集合,便于对数据进行操作

Arrays.asList的两个注意事项

1、参数必须是对象或者对象数组

Arrays.asList()的参数必须是对象或者对象数组,
错误做法:使用基础类型

int[] it = {1,2,3};
		List<int[]> ints = Arrays.asList(it);
		System.out.println(ints);
输出为[[I@59f95c5d]

正确做法:使用int的包装类Integer

Integer[] it = {1,2,3};
List<Integer> ints = Arrays.asList(it);
System.out.println(ints);
输出为[1, 2, 3]
2、返回值不是java.util.ArrayList而是java.util.Arrays的内部类
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
    {
        private static final long serialVersionUID = -2764017481108945198L;
        private final E[] a;

        ArrayList(E[] array) {
            a = Objects.requireNonNull(array);
        }


注意两个地方
Arrays.asList作用和使用注意事项_第1张图片

第一点是内部类ArraysList,第二点是a数组被final修饰,返回了ArrayList这个内部类,因此用Arrays.asList()将数组转换成list集合,获得的List是不能动态修改的,否则报错 java.lang.UnsupportedOperationException

错误的做法:

Integer[] it = {1,2,3};
List<Integer> ints = Arrays.asList(it);
ints.add(2);
System.out.println(ints);

解决办法:新建一个真正的List
比如:

Integer[] it = {1,2,3};
List<Integer> ints = new ArrayList<Integer>(Arrays.asList(it));
ints.add(4);
System.out.println(ints);

你可能感兴趣的:(java)