Java List add() and addAll() Methods

Filed Under: Java
Java List Add AddAll

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.

Let’s 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<String> 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:

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<? extends E> 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<? extends E> 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.

Let’s 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<Integer> 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 it’s 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.

Let’s look at a simple example of UnsupportedOperationException with add operation of both these types of lists.


jshell> List<Integer> 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<String> strs = new ArrayList<>();
strs ==> []

jshell> strs.add("A");
$6 ==> true

jshell> List<String> strs1 = Collections.unmodifiableList(strs);
strs1 ==> [A]

jshell> strs1.add("B");
|  Exception java.lang.UnsupportedOperationException
|        at Collections$UnmodifiableCollection.add (Collections.java:1058)
|        at (#8:1)
Java List Add UnsupportedOperationException

Java List add() UnsupportedOperationException

References

Leave a Reply

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

close
Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages