I have tried below code
String s[]={\"1\",\"2\",\"3\",\"4\"};
Collection c=Arrays.asList(s);
System.out.println(c.remove(\"1\") +\" remove flag\");
Syste
The List returned by Arrays.asList
method of java.util.Arrays
class is a fixed-size list object which means that elements cannot be added to or removed from the list.
So functions like Adding or Removing cannot be operated on such kind of Lists.
The solution to adding or removing without getting java.lang.UnsupportedOperationException
is ->
List<String> strList= new ArrayList<>(Arrays.asList(strs));
//Then Add or Remove can be called on such List
newList.add("100");
newList.remove("100");
Easy work around is just to pass in the List into an ArrayList
's constructor.
For example:
String valuesInArray[]={"1","2","3","4"}; List modifiableList = new ArrayList(Arrays.asList(valuesInArray)); System.out.println(modifiableList.remove("1") + " remove flag"); System.out.println(" collcetion "+ modifiableList);
Response:
true remove flag
collcetion [2, 3, 4]
A one liner fix is to declare your list like this:
List<Integer> list2 = new ArrayList<>(Arrays.asList(0,8,1,5,7,0));
Slight correction: no, it's not an unmodifiable Collection. It just doesn't support adding and removing elements, because it is backed by the supplied array and arrays aren't resizeable. But it supports operations like list.set(index, element)
I was having this problem, because I was also initializing my list with Arrays.asList
:
List<String> names = Arrays.asList("a", "b", "c");
To solve the problem, I used addAll
instead:
List<String> names = new ArrayList<String>();
names.addAll(Arrays.asList("a", "b", "c"));
This way you can edit the list, add new items or remove.