List<Integer> result = Arrays.asList(1, 2, 3);
或者
String[] str = {"a", "b", "c"}; List<String> result = Arrays.asList(str);
这个是我最常用的方法,非常好用。不过有个要注意的地方:就是这个方式产生的List是不支持add 和 remove的。如果操作了,就会抛出:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at ArrayListTest.main(ArrayListTest.java:10)
或者:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at ArrayListTest.main(ArrayListTest.java:10)
这个一定要注意,看到这个异常的时候,就要注意对应的List是不是通过这种方式创建出来的了。
解决这个问题
1、你可以直接循环将它放到一个List里,比如:
List<Integer> result = Arrays.asList(1, 2, 3);
List<Integer> res = new ArrayList<>();
result.forEach(x -> res.add(x));
2、也可以直接:
List<Integer> result = Arrays.asList(1, 2, 3);
List<Integer> res = new ArrayList<>(result);
3、如果是java8的话,可以直接使用:
List<Integer> result = Arrays.asList(1, 2, 3).stream().collect(Collectors.toList());