报错:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
at src.example.StreamStudy.StreamMain.main(StreamMain.java:17)
1、使用Arrays.tolist创建list的原理和坑?
原理:使用Arrays.asList()创建list会返回一个ArrayList的list集合,是一个Arrays类里面的内部类,而不是java.util.ArrayList类。两个类不一样所以会有很多问题。
问题1:不能使用add方法和addAll方法
原因:Arrays.ArrayList是静态内部类,且值被private final修饰不可变。
解决办法:
问题2:remove方法也不支持
解决上述两个问题的两个方法:
- 不使用Arrays.asList()创建list。直接使用new ArrayList<>()创建对象即可。
- 使用new ArrayList<>()+Arrays.asList()创建对象。
- 踩坑不易,有用还请点个免费的赞🙏🙏