Saturday, April 12, 2025

How to Reverse an Array in Java? Integer and String Array Example Tutorial

(追記) (追記ここまで)
This Java tip is about, how to reverse an array in Java, mostly primitive types e.g. int, long, double and String arrays. Despite of Java’s rich Collection API, use of array is quite common, but standard JDK doesn’t have great utility classes for Java. It’s difficult to convert between Java Collection e.g. List, Set to primitive arrays. Java’s array utility class java.util.Arrays, though offers some the critical functionalities like comparing arrays in Java and support to print arrays, It lacks a lot of common features, such as combining two arrays and reverse primitive or object array.

Thankfully, Apache commons-lang, an open-source library from Apache software foundation offers one interesting class ArrayUtils, which can be used in conjunction with java.util.Arrays class to play with both primitive and object array in Java.

This API offers conveniently overloaded method to reverse different kinds of array in Java e.g. int, double, float, log or Object arrays. On a similar note, you can also write your own utility method to reverse Array in Java, and this is even a good programming question.

For production usage, I personally prefer tried and tested library methods instead of reinventing the wheel.

Apache commons-lang fits the bill, as it offers other convenient API to complement JDK. In this Java tutorial, we will reverse int and String array in Java using ArrayUtils to show How to reverse primitive and object array in Java.

By the way, this is not the only way to reverse an array in Java, there are many otherways as well like

1. Using a temporary array
  • Creates a new array and copies elements in reverse order
  • Shown with an Integer array example: {1, 2, 3, 4, 5}
  • Uses a for-loop with the formula reversed[i] = arr[arr.length-1-i]

2. In-place reversal
  • Swaps elements without using additional memory
  • Shown with a String array example: {"A", "B", "C", "D"}
  • Only loops through half the array, swapping opposite elements
  • Uses a temporary variable to perform the swap

3. Using Collections.reverse()
  • The simplest method, leveraging Java's built-in functionality
  • Works with arrays of reference types (Integer, not int)
  • Requires converting the array to a List using Arrays.asList()
  • Example: Collections.reverse(Arrays.asList(numbers))

Here is also a nice diagram to visualize how each method transforms the original array into its reversed form.

Reverse int and String array in Java - Example

Java program to reverse int and String array in Java with Example Here is the code example to reverse any array in Java. We have declared two arrays, iArray which is an int array and sArray which stores String objects.


We have also included commons-lang-2.6.jar to use org.apache.commons.lang.ArrayUtils class to reverse Array in Java.

As discussed in our last post How to print array element in Java, we are using Arrays.toString() to print content of array.


(追記) (追記ここまで)

import java.util.Arrays;
import org.apache.commons.lang.ArrayUtils;
/**
 *
 * Java program to reverse array using Apache commons ArrayUtils class.
 * In this example we will reverse both int array and String array to
 * show how to reverse both primitive and object array in Java.
 *
 * @author
 */
public class ReverseArrayExample {
 public static void main(String args[]) {
 int[] iArray = new int[] {101,102,103,104,105};
 String[] sArray = new String[] {"one", "two", "three", "four", "five"};
 
 
 // reverse int array using Apache commons ArrayUtils.reverse() method
 System.out.println("Original int array : " + Arrays.toString(iArray));
 ArrayUtils.reverse(iArray);
 System.out.println("reversed int array : " + Arrays.toString(iArray));
 
 // reverse String array using ArrayUtis class
 System.out.println("Original String array : " + Arrays.toString(sArray));
 ArrayUtils.reverse(sArray);
 System.out.println("reversed String array in Java : " 
 + Arrays.toString(sArray)); 
 } 
 
}
Output:
Original int array : [101, 102, 103, 104, 105]
reversed int array : [105, 104, 103, 102, 101]
Original String array : [one, two, three, four, five]
reversed String array in Java : [five, four, three, two, one]

That's all on How to reverse Array in Java. In this Java program, we have seen examples to reverse String and int array using Apache commons ArrayUtils class.

By the way, there are a couple of other ways to reverse array as well, e.g. by converting Array to List and then using Collections.reverse() method or by using brute force and reverse array using an algorithm. It depends upon, which method you like.

If you are doing practice and learning Java, try to do this exercise using loops.

Related Java Programming tutorials from Javarevisited Blog

(追記) (追記ここまで)

17 comments :

SARAL SAXENA said...

Hi Javin gr8 article but if we go by the way of java..then this thing can also be achieved..

You can reverse an array like this:

public void reverse(Object [] a){
for(int i = 0; i < a.length / 2; i++){
Object temp = a[i]; // swap using temporary storage
a[i] = a[a.length - i - 1];
a[a.length - i - 1] = temp;
}
}
It's worthy to note that it doesn't matter if the array length is an odd number, as the median value will remain unchanged. I have to admit that I haven't tested this but it should work.

For now please check the following program..http://ideone.com/3qqRAm

March 22, 2013 at 9:46 AM
Anonymous said...

disappointed. i expected that you would provide algorithm for this. but you ended up in using open source library method.

May 12, 2014 at 2:44 PM
himanshu said...

public void swap(int[] arr,int a,int b){

int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;

}
public int[] reverseArray(int[] arr){
int size=arr.length-1;

for(int i=0;i<size;i++){

swap(arr,i,size--);

}

return arr;
}

January 11, 2015 at 8:57 PM
Unknown said...


/* let s1 and s2 be the two string that we have to compare.
we'll insert every character of the first string into a hashmap.
the character will be the key, whereas, the frequency of the character will be the value */


Hashmap hm = new Hashmap();

count = 1;
for (i=0; i1)
{
val--;
hm.put(j,val);
}
else
{
hm.remove(j);
}
else
{
System.out.println("Not anagrams");
}
}

if (hm.isEmpty())
{
System.out.println("Anagrams");
}
else
{
System.out.println("Not anagrams");
}

March 18, 2015 at 6:27 AM
Anonymous said...

Disappointing...... Was looking for an algorithm.

November 24, 2015 at 9:34 AM
Unknown said...

Agree, bad answer.
It's better to write something like this:
void reverse(int[] arr) {
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}

March 13, 2017 at 9:18 AM
Anonymous said...

Agree, bad answer.
It's better to write something like this:
void reverse(int[] arr) {
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
this doesn't work
Read more: http://javarevisited.blogspot.com/2013/03/how-to-reverse-array-in-java-int-String-array-example.html#ixzz4jMYu3XQ5

June 7, 2017 at 4:41 PM
Unknown said...

public class Nevermind
{

public static void main (String[] args) {

int[] array = {1,2,3,4,5,6,7,8,9,10};

for( int i : array ){ System.out.println("Before: "+i); }

array = reverse(array);

for( int i : array ){ System.out.println("After: "+i); }

}

static int[] reverse (int[] a) {

int index = a.length-1;

int first = 0;

for (int i = first; i < index; i++){

int temp = a[index];

a[index] = a[first];
a[first] = temp;

first += 1;
index -= 1;
}


return a;
}

}

September 30, 2018 at 1:28 PM
Anonymous said...

public class SwapInPlace {
public static int[] reverseInPlace(int arr[]) {
int l=0;
int high=arr.length-1;
int mid=(l+high)/2;
int len=high;
for(int i=0;i<=mid;i++) {

if(high%2==0) {
if(i<mid) {

int temp=arr[i];
arr[i]=arr[len];
arr[len]=temp;
len--;
}
}

if(high%2!=0) {
int temp=arr[i];
arr[i]=arr[len];
arr[len]=temp;
len--;
}

}
return printArray(arr);

}
public static int[] printArray(int array[]) {
for(int i=0;i<array.length;i++) {
System.out.print(array[i]+" ");
}
System.out.println();
return array;
}
public static void main(String args[]) {
int array[]= {1,3,5,4,2};
reverseInPlace(array);
int array1[]= {1,2,3,4,5,6};
reverseInPlace(array1);
}
}

January 23, 2020 at 9:15 PM
Kennedy said...

/**
* Program to reverse an array in place in Java.
* Works both when array size is odd and even :)
* @author: Kennedy
*/
import java.util.Arrays;
public class reverseArrayInPlace
{
public static int [] arr;
public static int a =0;
public static int b = 0;
//method to swap two values
public static void swap(int[] arr,int a,int b)
{
//swap two values a & b
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
//method to reverse array values
public static int[] reverseArray(int[] arr)
{
//decrement the array size
int size=arr.length-1;
/**As long as current first index is less than array size swap current index with current last index
*/
for(int i=0;i<size;i++)
{
swap(arr,i,size--);

}

return arr;
}

public static void main(String []args)
{

//create array
int [] arr = {3,5,7,9,11,13,15,17,19};
//print original array
System.out.println("Original Array:" + " " + Arrays.toString(arr));
//call reverse method
reverseArray(arr);
//print reversed array
System.out.println("Reversed Array:" + " " + Arrays.toString(arr));
}
}

OUTPUT:
$javac reverseArrayInPlace.java
$java -Xmx128M -Xms16M reverseArrayInPlace
Original Array: [3, 5, 7, 9, 11, 13, 15, 17, 19]
Reversed Array: [19, 17, 15, 13, 11, 9, 7, 5, 3]

March 6, 2020 at 11:33 PM
Tapan said...

public class ReverseArray {

public static void main(String[] args) {
int arr[] = { 1, 2, 3, 4, 5, 6 };
reverse(arr);
}

static void reverse(int[] arr) {
int size = (arr.length) / 2;
int count = 0;

for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
count++;
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
if (count == size)
break;
}
System.out.println(Arrays.toString(arr));
}
}

March 15, 2020 at 10:25 AM
javin paul said...

Good job Tapan, nice

March 18, 2020 at 8:01 AM
Unknown said...

easy way to reverse array

public class Reversearr {

public static void main(String[] args) {

Integer ar[]= {1, 1, 2, 3, 5, 5, 7, 9, 9, 9};

for(int i=ar.length-1; i>=0;i--) {
System.out.println(ar[i]);
}
}

}

April 22, 2020 at 10:37 PM
javin paul said...

@Unknown, this is not reversing the array but printing the array in reverse order. You need to return array itself where elements are in reverse order of given array.

April 30, 2020 at 9:46 PM
Nathaniel Cobbinah said...


public class bubbleSort {

public static void main(String[] args) {

int[] values = {32, 1,5, 9 ,90,16};
int[] values2 = {32, 1,5, 9 ,90,16};

int[] result = bubbleSortAsc(values);
int[] result2 = bubbleSortDes(values2);

System.out.println("ascending");
for(int value : result) {
System.out.println(value);
}

System.out.println("descending");
for(int value : result2) {
System.out.println(value);
}

}

public static int[] bubbleSortAsc(int[] list) {
int temp = 0;
int n = list.length;

for(int i=0; i < n; i++) {
for(int j=1; j < n; j++) {
if(list[j - 1] > list[j]) {
//swap
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
}
return list;
}


//descending sort
public static int[] bubbleSortDes(int[] list) {
int temp = 0;
for(int i=0; i < list.length; i++) {
for(int j=0; j < list.length; j++) {
if(list[i] > list[j]) {
//swap
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
return list;
}

}

October 2, 2021 at 1:14 PM
Anonymous said...

I will use temp method use this function to reverse array which takes tow parameters int say (arr[]) and size of the array say (n).

this function reverse array and store it in another array.

inside function new array (arr, the size of the array ) is initilized.

the array is iterated from the first element and each element arr [] is placed in the new array from the back.


Public static int reverse (int arr[] , int n) {
int b = new int [n] ;
int j = n;
for(int i = 0; i < n; i ++) {
b[j - 1] = arr[i];
j = j -1;
}
System. out. println("the reverse array: /n" ) ;
for(Int K =0; k < n; k++) {
System. Out. println(b[k] );
}
return j;
}
public static void main(String args[] ) {
int odd = {10, 20, 30, 40, 50} ;
odd. reverse (odd , odd. length) ;
}

August 4, 2024 at 9:52 PM
Ahmed said...

sir we want use the manual method but you have used is actually counted in library
I had solved using swaps array like this : 1- this function to reverse the array in less number of swaps

2- this function to reverse array it self the first element swaps with the last element

3- and the second element swap with the last second element and so on

4- for instance consider array [ 1, 2, 3, n , n - 1 , n - 2] we swap 1 with n and 2 with n - 1 and 3 with n - 2 and so on

public static int swap (int a[], int n) {
int i , k , t;
for(i = 0; i< n /2; i++) {
t = a[i] ;
a[i] = a[i - n - 1] ;
a[i - n - 1] = t;

}
System. out. println ("the reverse array is : /n" ) ;
for (K = 0; k< n; k++) {
System.out.println (a[k]);
}
return k;
}

public static void main (String args []) {
int odd [] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
odd. swap (odd, odd. length) ;
}

August 6, 2024 at 5:07 AM

Post a Comment

[フレーム]

AltStyle によって変換されたページ (->オリジナル) /