问题来源

当使用Arrays.asList(T...a)创建新的集合时,如果往集合中添加元素就会报错。代码如下

    Vertex[] startPair = graph.findMinTwoNOde();
    startPair[1].setParent(startPair[0]);
    List<Vertex> res = Arrays.asList(startPair);

报错信息
图片说明

分析原因

首先跳转到Arrays类的静态方法asList(T...a),代码如下:
图片说明
我们看到他返回了一个ArrayList对象,开始以为是java.util包中的ArrayList,但是java.util包中的ArrayList并没有传入数组的构造方法。于是跟进去。发现这是Arrays类中的一个内部类,这个类继承了AbstractList。
图片说明
但是,这个类没有重写add和remove方法!!
图片说明
因此直接调用父类的add方法和remove方法,产生不支持的操作异常UnsupportedOperationException
图片说明