Learnitweb

Java 8 program to get the three maximum and three minimum numbers from a given list of integers

You can use Java 8 Streams to get the three maximum and three minimum numbers from a given list of integers by using sorted(), limit(), and distinct() if needed.

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ThreeMaxThreeMin {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(10, 5, 30, 25, 100, 50, 70, 1);

        // Get three minimum numbers
        List<Integer> minNumbers = numbers.stream()
                .sorted() // Sort in ascending order
                .limit(3) // Take the first 3 elements
                .collect(Collectors.toList());

        // Get three maximum numbers
        List<Integer> maxNumbers = numbers.stream()
                .sorted((a, b) -> b - a) // Sort in descending order
                .limit(3) // Take the first 3 elements
                .collect(Collectors.toList());

        System.out.println("Three Minimum Numbers: " + minNumbers);
        System.out.println("Three Maximum Numbers: " + maxNumbers);
    }
}

Output:

Three Minimum Numbers: [1, 5, 10]
Three Maximum Numbers: [100, 70, 50]

Explanation:

  • Sorting the list:
    • sorted() → Sorts the list in ascending order (for min numbers).
    • sorted((a, b) -> b - a) → Sorts in descending order (for max numbers).
  • Extracting top 3:
    • limit(3) → Takes the first 3 elements from the sorted list.
  • Collecting results:
    • .collect(Collectors.toList()) → Converts the stream back into a list.

Handling Duplicates

If you want unique numbers, use distinct() before sorting:

numbers.stream().distinct().sorted().limit(3).collect(Collectors.toList());