How to Replace an Element at a Specific Index in an Array in Java

Replacing an element at a specific index is one of the simplest operations you can perform on an array in Java. It requires only a single assignment statement, yet this basic operation forms the foundation of many advanced array algorithms, including swapping elements, sorting, rotating arrays, updating records, and implementing various searching techniques.

Since Java arrays are mutable but fixed in size, replacing an element updates the existing value without creating a new array or changing the array's length. Understanding how replacement works—and how to perform it safely—helps build a solid understanding of how arrays behave in Java.

In this guide, you'll learn multiple ways to replace array elements, handle invalid indexes safely, perform conditional replacements, and understand what happens internally when an array element is modified.

Advertisement

Problem Statement

Given the following array:

 
int[] numbers = {10, 20, 30, 40, 50};
 

Replace the element at index 2 (currently 30) with 99.

Output

 
[10, 20, 99, 40, 50]
 

Basic Syntax

The simplest way to replace an element is by assigning a new value to the desired index.

 
import java.util.Arrays;

public class ReplaceElementExample {

    public static void main(String[] args) {

        int[] numbers = {10, 20, 30, 40, 50};

        numbers[2] = 99;

        System.out.println(Arrays.toString(numbers));
    }
}
 

Output

 
[10, 20, 99, 40, 50]
 

The syntax is simply:

 
arrayName[index] = newValue;
 

Java directly overwrites the value stored at the specified position.

The array itself remains the same object in memory.

Its length never changes.


Safe Replacement with Validation

Replacing an element is safe only if the index is valid.

Attempting to access an invalid index throws an ArrayIndexOutOfBoundsException.

A reusable utility method makes replacement much safer.

 
public static boolean replaceElement(int[] arr, int index, int newValue) {

    if (index < 0 || index >= arr.length) {
        return false;
    }

    arr[index] = newValue;
    return true;
}
 

Example

 
import java.util.Arrays;

public class SafeReplace {

    public static boolean replaceElement(int[] arr, int index, int newValue) {

        if (index < 0 || index >= arr.length) {
            return false;
        }

        arr[index] = newValue;
        return true;
    }

    public static void main(String[] args) {

        int[] numbers = {10, 20, 30, 40, 50};

        boolean updated = replaceElement(numbers, 2, 99);

        if (updated) {
            System.out.println(Arrays.toString(numbers));
        } else {
            System.out.println("Invalid index.");
        }
    }
}
 

Output

 
[10, 20, 99, 40, 50]
 

Using a helper method improves code readability and prevents runtime exceptions when indexes come from user input or calculations.


Replacing Elements Based on a Condition

Sometimes you don't know the exact index, but you know which values should be replaced.

For example, replace every occurrence of 30 with 99.

 
import java.util.Arrays;

public class ReplaceByValue {

    public static void main(String[] args) {

        int[] numbers = {10, 20, 30, 40, 30, 50};

        for (int i = 0; i < numbers.length; i++) {

            if (numbers[i] == 30) {
                numbers[i] = 99;
            }
        }

        System.out.println(Arrays.toString(numbers));
    }
}
 

Output

 
[10, 20, 99, 40, 99, 50]
 

This approach is useful when the target value may appear multiple times.


Replacing the First Matching Element Only

Sometimes you only want to replace the first occurrence of a value.

 
import java.util.Arrays;

public class ReplaceFirstOccurrence {

    public static void main(String[] args) {

        int[] numbers = {30, 20, 30, 40, 30};

        for (int i = 0; i < numbers.length; i++) {

            if (numbers[i] == 30) {
                numbers[i] = 99;
                break;
            }
        }

        System.out.println(Arrays.toString(numbers));
    }
}
 

Output

 
[99, 20, 30, 40, 30]
 

Using break stops the loop after replacing the first matching element.


Replacing Elements Using User Input

When the index comes from the user, validation is essential.

 
import java.util.Arrays;
import java.util.Scanner;

public class ReplaceUsingInput {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int[] numbers = {10, 20, 30, 40, 50};

        System.out.print("Enter index: ");
        int index = sc.nextInt();

        System.out.print("Enter new value: ");
        int value = sc.nextInt();

        if (index >= 0 && index < numbers.length) {

            numbers[index] = value;

            System.out.println("Updated Array:");
            System.out.println(Arrays.toString(numbers));

        } else {

            System.out.println("Invalid index.");
        }

        sc.close();
    }
}
 

Sample Output

 
Enter index: 2
Enter new value: 99

Updated Array:
[10, 20, 99, 40, 50]
 

Replacing Multiple Values Using Java Streams

If you prefer functional programming, Streams can create a transformed array.

 
import java.util.Arrays;

public class ReplaceUsingStreams {

    public static void main(String[] args) {

        int[] numbers = {10, 20, 30, 40, 30};

        int[] updated = Arrays.stream(numbers)
                              .map(n -> n == 30 ? 99 : n)
                              .toArray();

        System.out.println(Arrays.toString(updated));
    }
}
 

Output

 
[10, 20, 99, 40, 99]
 

Unlike direct assignment, this creates a new array instead of modifying the existing one.


Step-by-Step Explanation

Consider this array:

 
[10, 20, 30, 40, 50]
 

We execute:

 
numbers[2] = 99;
 

The process is straightforward.

Step 1

Locate index 2.

 
Index

0   1   2   3   4
 

Step 2

Read the existing value.

 
30
 

Step 3

Overwrite it with the new value.

 
99
 

Final Array

 
[10, 20, 99, 40, 50]
 

Only one memory location changes.

Everything else remains unchanged.


Internal Working

Suppose the array is stored in memory like this:

 
Index

0     1     2     3     4
 
 
10   20   30   40   50
 

When Java executes

 
numbers[2] = 99;
 

it computes the memory address corresponding to index 2 and overwrites only that value.

After replacement:

 
10   20   99   40   50
 

No new array is allocated.

The modification happens directly inside the existing array.

This is known as an in-place update.


Time and Space Complexity

Operation Time Complexity Space Complexity
Replace by known index O(1) O(1)
Replace all matching values O(n) O(1)
Stream-based replacement O(n) O(n)

Replacing a single element by index is one of the fastest operations available because Java can directly calculate the element's memory location.


Real-Life Analogy

Imagine a row of hotel rooms.

Room 203 currently has Guest A.

Guest A checks out.

Guest B immediately checks into the same room.

The hotel building doesn't grow.

No rooms are shifted.

Only the occupant of room 203 changes.

Replacing an array element works exactly the same way.


Best Practices

  • Always validate indexes received from users or external sources.
  • Use direct assignment when you already know the index.
  • Create helper methods for repeated replacement logic.
  • Use loops for replacing multiple matching values.
  • Prefer Streams only when creating a transformed copy of the array.
  • Remember that replacing an element never changes the array size.
  • Keep a copy of the original array if the old values must be preserved.

Common Mistakes

1. Using an Invalid Index

 
numbers[10] = 99;
 

This throws an ArrayIndexOutOfBoundsException.


2. Confusing Replace with Insert

Many beginners expect this:

 
[10,20,30,40]
 

Replace index 2 with 99

 
[10,20,99,30,40]
 

This is not replacement.

It is insertion.

Arrays cannot insert new elements without creating another array.

Replacement simply produces:

 
[10,20,99,40]
 

3. Forgetting Arrays Are Reference Types

 
int[] a = {1,2,3};

int[] b = a;

b[0] = 99;
 

Now

 
a = [99,2,3]
 

Both variables point to the same array.


4. Assuming Streams Modify the Original Array

 
Arrays.stream(numbers)
      .map(n -> n * 2)
      .toArray();
 

The original array remains unchanged.


Expert Tips

  • Replacing a single element by index is an O(1) operation because Java computes the memory offset directly.
  • Arrays are mutable, so changes made inside a method affect the caller's array.
  • For object arrays, replacement changes the object reference stored at that position—it does not modify the object itself.
  • If you frequently perform replacements based on conditions, consider creating reusable utility methods.
  • When implementing algorithms like Bubble Sort, Selection Sort, or Quick Sort, every swap is simply two replacement operations performed together.

Comparison Table

Replacement Method Modifies Original Array Time Complexity Best Use Case
Direct assignment Yes O(1) Replace known index
Validated helper method Yes O(1) Safe replacement
Loop with condition Yes O(n) Replace matching values
Java Streams No (creates new array) O(n) Functional transformation

Frequently Asked Questions

1. Does replacing an array element change the array length?

No. It only overwrites an existing value. The array size remains fixed.


2. What happens if the index is invalid?

Java throws an ArrayIndexOutOfBoundsException.

Always validate the index before replacement.


3. How do I replace every occurrence of a value?

Traverse the array with a loop.

 
for (int i = 0; i < arr.length; i++) {

    if (arr[i] == target) {
        arr[i] = replacement;
    }
}
 

4. Can I replace only the first occurrence?

Yes.

Replace the value and immediately use break.


5. Does replacing an element inside a method affect the original array?

Yes.

Arrays are reference types, so modifications are visible to the caller.


6. Is there a built-in method to replace all occurrences?

No.

Primitive arrays require a loop or a Stream transformation.


7. How do I replace an element in a 2D array?

Use row and column indexes.

 
matrix[row][column] = newValue;
 

8. Can I undo a replacement?

Not automatically.

If you need the original data later, create a copy of the array before modifying it.

 
int[] backup = numbers.clone();