A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/java/immutable-list-in-java/ below:

Immutable List in Java - GeeksforGeeks

Immutable List in Java

Last Updated : 11 Jul, 2025

Advantages of ImmutableList Note

that it is an immutable collection, not collection of immutable objects, so the objects inside it can be modified.


Class Declaration:
@GwtCompatible(serializable=true,
               emulated=true)
public abstract class ImmutableList
extends ImmutableCollection
implements List, RandomAccess
Class hierarchy:
java.lang.Object
  ↳ java.util.AbstractCollection
      ↳ com.google.common.collect.ImmutableCollection
          ↳ com.google.common.collect.ImmutableList 
Creating ImmutableList

ImmutableList can be created by various methods. These include:

  1. From existing List using copyOf() function of Guava Java
    // Below is the Java program to create ImmutableList
    
    import com.google.common.collect.ImmutableList;
    import java.util.*;
    
    class GFG {
    
        // Function to create ImmutableList from List
        public static <T> void iList(List<T> list)
        {
            // Create ImmutableMap from Map using copyOf()
            ImmutableList<T> immutableList =
                              ImmutableList.copyOf(list);
    
            // Print the ImmutableMap
            System.out.println(immutableList);
        }
    
        public static void main(String[] args)
        {
            List<String> list = new ArrayList<>(
                Arrays.asList("Geeks", "For", "Geeks"));
    
            iList(list);
        }
    }
    
    Output:
    [Geeks, For, Geeks]
    
  2. New ImmutableList using of() function from Guava Java
    // Below is the Java program to create ImmutableList
    
    import com.google.common.collect.ImmutableList;
    import java.util.*;
    
    class GFG {
    
        // Function to create ImmutableList
        public static void iList()
        {
            // Create ImmutableList using of()
            ImmutableList<String> immutableList = 
                   ImmutableList.of("Geeks", "For", "Geeks");
    
            // Print the ImmutableMap
            System.out.println(immutableList);
        }
    
        public static void main(String[] args)
        {
            iList();
        }
    }
    
    Output:
    [Geeks, For, Geeks]
    
  3. Using Java 9 Factory Of() method In Java, use of() with Set, Map or List to create an Immutable List. Please Note: The programs below are of Java 9. Hence you would need a Java 9 compiler to run them. Java
    // Java code illustrating of() method to
    // create a ImmutableSet
    import java.util.*;
    import com.google.common.collect.ImmutableList;
    
    class GfG {
        public static void main(String args[])
        {
            // non-empty immutable set
            List<String> list = List.of("Geeks", "For", "Geeks");
    
            // Let's print the list
            System.out.println(list);
        }
    }
    
    Output:
    [Geeks, For, Geeks]
    
  4. Using Builder() from ImmutableList In Guava, ImmnutableList class provides a function Builder(). Through this function, a new ImmutableList can be created, or an ImmutableList can be created from an existing List or both.

Try to change ImmutableList

As mentioned earlier, the below program will throw

UnsupportedOperationException

.

Java
// Java code to show that UnsupportedOperationException
// will be thrown when ImmutableList is modified.
import java.util.*;

class GfG {
    public static void main(String args[])
    {
        // empty immutable map
        List<String> list = List.of();

        // Lets try adding element in  List
        List.add("Geeks");
    }
}

Output :

Exception in thread "main" java.lang.UnsupportedOperationException
    at com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:218)
    at ImmutableListDemo.main(Main.java:16)
How is it different from Collections.unmodifiableList()?

Collections.unmodifiableList creates a wrapper around the same existing List such that the wrapper cannot be used to modify it. However we can still change original List.

Java
// Java program to demonstrate that a List created using
// Collections.unmodifiableList() can be modified indirectly.
import java.io.*;
import java.util.*;

class GFG {
    public static void main(String[] args)
    {
        List<String> list = new ArrayList<>();
        list.add("Geeks");

        // Create ImmutableList from List using copyOf()
        List<String> iList = Collections.unmodifiableList(list);

        // We change List and the changes reflect in iList.
        list.add("For");
        list.add("Geeks");

        System.out.println(iList);
    }
}
Output:
[Geeks, For, Geeks]

If we create an ImmutableList from an existing List and change the existing List, the ImmutableList does not change because a copy is created.

Java
// Below is a Java program for
// Creating an immutable List using copyOf()
// and modifying original List.
import java.io.*;
import java.util.*;
import com.google.common.collect.ImmutableList;

class GFG {
    public static void main(String[] args)
    {
        List<String> list = new ArrayList<>();
        list.add("Geeks");

        // Create ImmutableList from List using copyOf()
        ImmutableList<String> iList = ImmutableList.copyOf(list);

        // We change List and the changes wont reflect in iList.
        list.add("For");
        list.add("Geeks");

        System.out.println(iList);
    }
}

Output :

[Geeks]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4