Arrays.asList Throws UnsupportedOperationException

String[] a = {"3", "3", "10", "4", "2", "8"};
String[] b = {"10", "4", "12", "3", "23", "1", "8"};
List<String> aList =  Arrays.asList(a);
List<String> bList =  Arrays.asList(b);
aList.retainAll(bList);

This exception is thrown:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.remove(AbstractList.java:659)
    at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:77)
    at java.util.AbstractCollection.retainAll(AbstractCollection.java:276)
    at JavaTest.main(JavaTest.java:16)



Root Cause:
Arrays.asList returns a fixed size list. So you cannot add or remove elements.


Solution:

Use the ArrayList constructor that takes a collection instead.
List<String> aList = new ArrayList<>(Arrays.asList(a));

猜你喜欢

转载自elegant0719.iteye.com/blog/2290848