find third largest element in an Arrays or List

There are multiple way to find third largest element in an Arrays or List in java.

Using Stream.skip() method :-

  • First convert Arrays to list using Arrays.asList method
  • Now, get Stream data from List using arrayList.stream() method
  • Sort arrayList in reverse order using Comparator.reverseOrder() inside Stream.sorted() method
  • To arrayList sorted in reverse order, 3rd element in the list will be the third longest element
  • We will skip first 2 element which is the longest and 2nd longest element using Stream.skip() method.
  • findFirst() method will return 3rd longest String in the arrayList.
  • Inside if condition we validate 3rd longest element is not equals to null.
  • Now we will print 3rd longest element from get() method.

Using size() method :-

  • First we find size of array using length() method.
  • Now we sort the elements of the given array using the sort method of the java.util.Arrays class.
  • Here array[size-3] is give the 3rd position of element.
  • Now we will print 3rd longest element.
    				
    					import java.util.Arrays;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Optional;
    
    public class ThirdLargestElement {
    	public static void main(String[] args) {
    		List<Integer> arrayList = Arrays.asList(220, 2, 16, 238, 185);
    
    		// Stream.skip() method
    		Optional<Integer> str = arrayList.stream().sorted(Comparator.reverseOrder()).skip(2).findFirst();
    		if (str != null) {
    			System.out.println("3rd largest element are :- " + str.get());
    		}
    		// Using size method
    		int array[] = {220, 2, 16, 238, 185};
    		int size = array.length;
    		Arrays.sort(array);
    		int in = array[size - 3];
    		System.out.println("3rd largest element are :" + in);
    	}
    }
    				
    			

    Output :-
    3rd largest element are :- 185
    3rd largest element are :185