</>

Technology

Java Programs

Difficulty

Intermediate

Interview Question

Write a Java program to find the second largest element in an array.

Answer

Find Second Largest Element in an Array

Method 1: Two-Variable Tracking (Most Efficient)

Java
public class SecondLargest {
    public static void main(String[] args) {
        int arr[] = { 12, 35, 1, 10, 34, 1 };

        int largest  = Integer.MIN_VALUE;
        int secondLargest = Integer.MIN_VALUE;

        for (int num : arr) {
            if (num > largest) {
                secondLargest = largest;  // old largest becomes second
                largest = num;
            } else if (num > secondLargest && num != largest) {
                secondLargest = num;
            }
        }

        System.out.println("Largest: " + largest);
        System.out.println("Second Largest: " + secondLargest);
    }
}

Output

CODE
Largest: 35
Second Largest: 34

Method 2: Sort and Pick (Simple)

Java
import java.util.Arrays;

int arr[] = { 12, 35, 1, 10, 34, 1 };
Arrays.sort(arr);  // [1, 1, 10, 12, 34, 35]

// Second largest is at arr.length - 2
System.out.println("Second Largest: " + arr[arr.length - 2]);  // → 34

Note: Works only if no duplicates at the top. For unique second largest, traverse from end:

Java
for (int i = arr.length - 2; i >= 0; i--) {
    if (arr[i] != arr[arr.length - 1]) {
        System.out.println("Second Largest: " + arr[i]);
        break;
    }
}

Method 3: Using TreeSet (Unique values sorted)

Java
import java.util.TreeSet;

int arr[] = { 12, 35, 1, 10, 34, 1, 35 };
TreeSet<Integer> set = new TreeSet<>();
for (int num : arr) set.add(num);  // TreeSet removes duplicates, keeps sorted

// headSet(max) = all elements less than max → last() is second largest
int secondLargest = set.headSet(set.last()).last();
System.out.println("Second Largest: " + secondLargest);  // → 34

Automation Testing Relevance

Java
// Find the second highest priced item on a product listing page
List<WebElement> priceElements = driver.findElements(By.css(".product-price"));
int largest = 0, second = 0;

for (WebElement el : priceElements) {
    int price = Integer.parseInt(el.getText().replace("$", "").trim());
    if (price > largest) { second = largest; largest = price; }
    else if (price > second) second = price;
}
System.out.println("Second highest price: $" + second);

Follow AutomateQA