Last Updated : 11 Jul, 2025
that it is an immutable collection, not collection of immutable objects, so the objects inside it can be modified.
@GwtCompatible(serializable=true, emulated=true) public abstract class ImmutableList extends ImmutableCollection implements List, RandomAccessClass hierarchy:
java.lang.Object ↳ java.util.AbstractCollection ↳ com.google.common.collect.ImmutableCollection ↳ com.google.common.collect.ImmutableListCreating ImmutableList
ImmutableList can be created by various methods. These include:
// 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]
// 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]
// 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]
// Java code illustrating of() method to
// create a ImmutableList
import java.util.*;
import com.google.common.collect.ImmutableList;
class GfG {
public static void main(String args[])
{
// non-empty immutable set
ImmutableList<String> iList = ImmutableList.<String>builder()
.add("Geeks", "For", "Geeks")
.build();
// Let's print the List
System.out.println(iList);
}
}
Output:
[Geeks, For, Geeks]
// Java code illustrating of() method to
// create a ImmutableList
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");
ImmutableList<String> iList = ImmutableList.<String>builder()
.addAll(list)
.build();
// Let's print the List
System.out.println(iList);
}
}
Output:
[Geeks, For, Geeks]
// Java code illustrating of() method to
// create a ImmutableList
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");
ImmutableList<String> iList = ImmutableList.<String>builder()
.addAll(list)
.add("Computer", "Portal", )
.build();
// Let's print the set
System.out.println(iList);
}
}
Output:
[Geeks, For, Geeks, Computer, Portal]
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