Second Largest Element in Java 8 Streams | 6 Interview-Ready Approaches

Hi Friends,

Second Largest Element in Java 8 Streams | 6 Interview-Ready Approaches

This is frequently asked questions in Interview. I have faced this interview in Persistent, Capgemini and Infosys.

Please find the Youtube link of this program. 

 Second Largest Element in Java 8 Streams | 6 Interview-Ready Approaches




package org.practice.basicprgms;


import java.util.Arrays;

import java.util.Comparator;

import java.util.HashMap;

import java.util.Map;

import java.util.TreeSet;

import java.util.stream.Collectors;


public class FindSecondLargestNumber {


public static void main(String[] args) {

int[] arr = {10,15,20,25,30};

// Method 1: Using Sorted(0 and Skip() method

int secondLargestNumber =

Arrays.stream(arr)

.boxed()

.sorted(Comparator.reverseOrder())

.skip(1)

.findFirst()

.orElseThrow(() -> new RuntimeException("Second Largest Number is Not Available"));

System.out.println("Method 1: Second Larget Number : "+ secondLargestNumber);


// Method 2: Using Lambda Expression

secondLargestNumber =

Arrays.stream(arr)

.boxed()

.sorted((a,b) -> b - a)

.skip(1)

.findFirst()

.orElseThrow(() -> new RuntimeException("Second Largest Number is Not Available"));

System.out.println("Method 2: Second Larget Number : "+ secondLargestNumber);

// Method 3: Using max() method

int maxNum = Arrays.stream(arr).max().getAsInt();

secondLargestNumber =

Arrays.stream(arr)

.filter(n -> n < maxNum)

.max()

.orElseThrow(() -> new RuntimeException("Second Largest Number is Not Available"));

System.out.println("Method 3: Second Larget Number : "+ secondLargestNumber);

// Method 4: Using TreeSet and Stream

secondLargestNumber =

Arrays.stream(arr)

.boxed()

.collect(Collectors.toCollection(() -> new TreeSet<Integer>(Comparator.reverseOrder())))

.stream()

.skip(1)

.findFirst()

.orElseThrow(() -> new RuntimeException("Second Largest Number is Not Available"));

System.out.println("Method 4: Second Larget Number : "+ secondLargestNumber);

// Method 5: Using Map Collection Object

Map<String, Integer> map = new HashMap<>();

map.put("Ten", 10);

map.put("Twenty", 20);

map.put("Thirty", 30);

map.put("Fourty", 40);

map.put("Fifty", 50);

secondLargestNumber =

map.values().stream()

.sorted(Comparator.reverseOrder())

.skip(1)

.findFirst()

.orElseThrow(() -> new RuntimeException("Second Largest Number is Not Available"));

System.out.println("Method 5: Second Larget Number : "+ secondLargestNumber);

// Method 6 : USing Map

Map.Entry<String, Integer> secondLargestEntry =

map.entrySet().stream()

.sorted(Map.Entry.<String, Integer>comparingByValue().reversed())

.skip(1)

.findFirst()

.orElseThrow(() -> new RuntimeException("Second Largest Number is Not Available"));

System.out.println("Method 6: Second Larget Number : "+ secondLargestEntry.getValue());

}


}


Post a Comment

0 Comments