Java List Interface: In-Depth Guide to List Collections

Explore the Java List interface, which extends Collection and defines the behavior of ordered collections that store elements in sequence. Learn how to insert, access, and manage elements by index, allowing duplicates and supporting flexible data management in Java.



Java - List Interface

List Interface

The List interface extends Collection and declares the behavior of a collection that stores a sequence of elements.

  • Elements can be inserted or accessed by their position in the list, using a zero-based index.
  • A list may contain duplicate elements.

In addition to the methods defined by Collection, List defines some of its own, which are summarized in the following table.

Several of the list methods will throw an UnsupportedOperationException if the collection cannot be modified, and a ClassCastException is generated when one object is incompatible with another.

Declaration of Java List Interface

The following is the declaration of a List interface in Java:

Declaration Syntax

public interface List<E> extends Collection<E>;
    

Creating a Java List

A Java list is created using the List interface. The syntax is as follows:

Creation Syntax

List<Obj> list = new ArrayList<Obj>();
    

Example of List Interface

The following example demonstrates the usage of the List interface in Java:

Example Code

import java.util.*;

public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();

list1.add(0, 30);
list1.add(1, 40);

System.out.println("list1 : " + list1);

list2.add(30);
list2.add(40);
list2.add(50);

list1.addAll(1, list2);

System.out.println("list2 : " + list2);

list1.remove(1);

System.out.println("list1 after removing an element: " + list1);

System.out.println("list1 using get() : " + list1.get(2));

list1.set(0, 60);

System.out.println("list1 : " + list1);
}
}
    
Output

list1 : [30, 40]
list2 : [30, 40, 50]
list1 after removing an element: [30, 50, 40]
list1 using get() : 40
list1 : [60, 50, 40]
    

List Interface Methods

The following are the methods of the List Interface in Java:

Sr.No. Method & Description
1 void add(int index, Object obj)
Inserts obj into the invoking list at the specified index. Any pre-existing elements at or beyond the point of insertion are shifted up, so no elements are overwritten.
2 boolean addAll(int index, Collection c)
Inserts all elements of c into the invoking list at the specified index. Any pre-existing elements at or beyond the point of insertion are shifted up, and no elements are overwritten. Returns true if the invoking list changes; false otherwise.
3 Object get(int index)
Returns the object stored at the specified index within the invoking collection.
4 int indexOf(Object obj)
Returns the index of the first instance of obj in the invoking list. If obj is not an element of the list, -1 is returned.
5 int lastIndexOf(Object obj)
Returns the index of the last instance of obj in the invoking list. If obj is not an element of the list, -1 is returned.
6 ListIterator listIterator()
Returns an iterator to the start of the invoking list.
7 ListIterator listIterator(int index)
Returns an iterator to the invoking list that begins at the specified index.
8 Object remove(int index)
Removes the element at position index from the invoking list and returns the deleted element. The resulting list is compacted, meaning the indexes of subsequent elements are decremented by one.
9 Object set(int index, Object obj)
Assigns obj to the location specified by index within the invoking list.
10 List subList(int start, int end)
Returns a list that includes elements from start to end in the invoking list. Elements in the returned list are also referenced by the invoking object.

More Examples of List Interface

Example: Java List using ArrayList

The above interface has been implemented using ArrayList. The following is an example demonstrating a few methods from various class implementations of the above collection methods:

Example Code

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

public class CollectionsDemo {
public static void main(String[] args) {
    List<String> a1 = new ArrayList<>();
    a1.add("Liam");
    a1.add("Emma");
    a1.add("Noah");      
    System.out.println("ArrayList Elements");
    System.out.print("\t" + a1);
}
}
    
Output

ArrayList Elements
[Liam, Emma, Noah]
    

Example: Java List using LinkedList

The above interface has been implemented using LinkedList. The following is an example demonstrating a few methods from various class implementations of the above collection methods:

Example Code

import java.util.LinkedList;
import java.util.List;

public class CollectionsDemo {
public static void main(String[] args) {
    List<String> a1 = new LinkedList<>();
    a1.add("Liam");
    a1.add("Emma");
    a1.add("Noah");      
    System.out.println("LinkedList Elements");
    System.out.print("\t" + a1);
}
}
    
Output

LinkedList Elements
[Liam, Emma, Noah]
    

Example: Adding Element to Java List

The above interface has been implemented using ArrayList. The following is another example demonstrating a few methods from various class implementations of the above collection methods:

Example Code

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

public class CollectionsDemo {
public static void main(String[] args) {
    List<String> a1 = new ArrayList<>();
    a1.add("Liam");
    a1.add("Emma");
    a1.add("Noah");      
    System.out.println("ArrayList Elements");
    System.out.print("\t" + a1);
    
    // Remove second element
    a1.remove(1);
    
    System.out.println("\nArrayList Elements");
    System.out.print("\t" + a1);
}
}
    
Output

ArrayList Elements
[Liam, Emma, Noah]
ArrayList Elements
[Liam, Noah]