Can we add list inside list in Java?

1. Java List add()

This method is used to add elements to the list. There are two methods to add elements to the list.

  1. add(E e): appends the element at the end of the list. Since List supports Generics, the type of elements that can be added is determined when the list is created.
  2. add(int index, E element): inserts the element at the given index. The elements from the given index is shifted towards right of the list. The method throws IndexOutOfBoundsException if the given index is out of range.

Lets look at some examples of List add() methods.

package com.journaldev.examples; import java.util.ArrayList; import java.util.List; public class ListAddExamples { public static void main(String[] args) { List vowels = new ArrayList<>(); vowels.add("A"); // [A] vowels.add("E"); // [A, E] vowels.add("U"); // [A, E, U] System.out.println(vowels); // [A, E, U] vowels.add(2, "I"); // [A, E, I, U] vowels.add(3, "O"); // [A, E, I, O, U] System.out.println(vowels); // [A, E, I, O, U] } }
Recommended Readings:
  • Java List
  • Java ArrayList

2. Java List addAll()

This method is used to add the elements from a collection to the list. There are two overloaded addAll() methods.

  1. addAll(Collection c): This method appends all the elements from the given collection to the end of the list. The order of insertion depends on the order in which the collection iterator returns them.
  2. addAll(int index, Collection c): we can use this method to insert elements from a collection at the given index. All the elements in the list are shifted towards the right to make space for the elements from the collection.

Lets look at a simple example of List addAll() methods.

package com.journaldev.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ListAddAllExamples { public static void main(String[] args) { List primeNumbers = new ArrayList<>(); primeNumbers.addAll(Arrays.asList(2, 7, 11)); System.out.println(primeNumbers); // [2, 7, 11] primeNumbers.addAll(1, Arrays.asList(3, 5)); System.out.println(primeNumbers); // [2, 3, 5, 7, 11] } }

3. UnsupportedOperationException with List add() Methods

If you look at the List add() and addAll() method documentation, the operation is mentioned as optional.

It means that the list implementation may not support it. In this case, the list add() methods throw UnsupportedOperationException.

There are two common scenarios where you will find this exception when adding elements to the list.

  1. Arrays.asList(): This method returns a fixed-size list because its backed by the specified array. Any operation where the list size is changed throws UnsupportedOperationException.
  2. Collections.unmodifiableList(List l): This method returns a unmodifiable view of the given list. So the add() operations throw UnsupportedOperationException.

Lets look at a simple example of UnsupportedOperationException with add operation of both these types of lists.

jshell> List ints = Arrays.asList(1,2,3); ints ==> [1, 2, 3] jshell> ints.add(4); | Exception java.lang.UnsupportedOperationException | at AbstractList.add (AbstractList.java:153) | at AbstractList.add (AbstractList.java:111) | at (#4:1) jshell> List strs = new ArrayList<>(); strs ==> [] jshell> strs.add("A"); $6 ==> true jshell> List strs1 = Collections.unmodifiableList(strs); strs1 ==> [A] jshell> strs1.add("B"); | Exception java.lang.UnsupportedOperationException | at Collections$UnmodifiableCollection.add (Collections.java:1058) | at (#8:1)
Can we add list inside list in Java?
Can we add list inside list in Java?

Java List add() UnsupportedOperationException

References

  • List API Docs
  • StackOverflow Question