Reverse an ArrayList in Java - Step-by-Step Guide

06 May 2023 Balmiki Mandal 0 Core Java

Reverse an ArrayList in Java

In this article, we are going to discuss about reversing an ArrayList in Java. Reversing an ArrayList means to reverse the order of elements of the ArrayList. There are several ways to reverse an ArrayList in Java. In this article, we will go through some of the common approaches.

Using Collections.reverse() Method

The collections framework provides a method named reverse() on List interface which can be used to reverse an ArrayList. This method reverses the elements in the underlying list. The order of elements remains unaffected. This is the simplest and most efficient way to reverse an ArrayList.

import java.util.ArrayList; 
import java.util.Collections; 

public class ArraylistReverse { 
    public static void main(String[] args) 
    { 
        ArrayList colors = new ArrayList<>(); 

        colors.add("green"); 
        colors.add("red"); 
        colors.add("blue"); 
        colors.add("yellow"); 
        colors.add("white"); 

        System.out.println("Original List: " + colors); 

        Collections.reverse(colors); 

        System.out.println("Reverse List: " + colors); 
    } 
}

Output:

Original List: [green, red, blue, yellow, white] 
Reverse List: [white, yellow, blue, red, green] 

Using for loop

We can reverse an ArrayList using a simple for loop. We can swap the first element with the last element, second element with the last second element and so on up to the middle of the list. This approach is efficient but requires us to write more code as compared to using Collections.reverse() method.

import java.util.ArrayList; 

public class ArraylistReverse {

    public static void main(String[] args) 
    { 
        ArrayList colors = new ArrayList<>(); 

        colors.add("green"); 
        colors.add("red"); 
        colors.add("blue"); 
        colors.add("yellow"); 
        colors.add("white"); 

        System.out.println("Original List: " + colors); 

        int size = colors.size(); 

        for (int i = 0; i < size / 2; i++) { 
            String tmp = colors.get(i); 
            colors.set(i, colors.get(size - i - 1)); 
            colors.set(size - i - 1, tmp); 
        } 

        System.out.println("Reverse List: " + colors); 
    } 
}

Output:

Original List: [green, red, blue, yellow, white] 
Reverse List: [white, yellow, blue, red, green] 

Using Recursion

This is another efficient approach to reverse an ArrayList. We can reverse the order of elements of the ArrayList by calling a recursive function which swaps the first element with the last element and then calls the recursive funtion on the sublist excluding first and last elements. This approach is more efficient but requires more understanding.

import java.util.ArrayList; 

public class ArraylistReverse {

    public static void main(String[] args) 
    { 
        ArrayList colors = new ArrayList<>(); 

        colors.add("green"); 
        colors.add("red"); 
        colors.add("blue"); 
        colors.add("yellow"); 
        colors.add("white"); 

        System.out.println("Original List: " + colors); 

        reverse(colors, 0 , colors.size()-1); 

        System.out.println("Reverse List: " + colors); 
    } 

    public static void reverse(ArrayList list, int start, int end) 
    { 
        if (start >= end) 
            return; 

        String temp = list.get(start); 
        list.set(start, list.get(end)); 
        list.set(end, temp); 

        reverse(list, start + 1, end - 1); 
    } 
}

Output:

Original List: [green, red, blue, yellow, white] 
Reverse List: [white, yellow, blue, red, green] 

These are some of the approaches to reverse an ArrayList in Java. As we can see all these approaches have their own use cases, so it is important to understand the requirements before choosing an approach.

BY: Balmiki Mandal

Related Blogs

Post Comments.

Login to Post a Comment

No comments yet, Be the first to comment.