Java List java.lang.UnsupportedOperationException

A simple List.add() and hits the following java.lang.UnsupportedOperationException

ListExample.java

package com.mkyong;

import java.util.Arrays;
import java.util.List;

public class ListExample {

    public static void main(String[] args) {

        List<String> str = Arrays.asList("A", "B", "C");

        str.add("D");

        System.out.println(str);
    }

}

Output


Exception in thread "main" java.lang.UnsupportedOperationException
	at java.base/java.util.AbstractList.add(AbstractList.java:153)
	at java.base/java.util.AbstractList.add(AbstractList.java:111)
	at com.mkyong.ListExample.main(ListExample.java:14)

Solution

The Arrays.asList returns a fixed-size list, modify is not allowed. To fix it, try this :

ListExample.java

package com.mkyong;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListExample {

    public static void main(String[] args) {

        List<String> str = new ArrayList<>(Arrays.asList("A", "B", "C"));
        //List<String> str = Arrays.asList("A", "B", "C");

        str.add("D");

        System.out.println(str);
    }

}

Output


[A, B, C, D]

References

3 comments on “Java List java.lang.UnsupportedOperationException

  1. Consumer<List<Integer>> con=list->{
    for(int i=0;i<list.size();i++) {
    list.add(list.get(i)+1);
    }
    list.stream().forEach(System.out::println);
    };

    List<Integer> list=new ArrayList<>(Arrays.asList(1,2,3));
    con.accept(list);

    Reply
    1. I am getting unsupported error and if I am replacing list.add() to list.set() then there is no issue .

      Reply

Leave a Comment

Your email address will not be published. Required fields are marked *