import java.util.Arrays; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; public class MostRepeatedElement { public static void main(String[] args) { int[] numbers = {1, 3, 2, 3, 4, 1, 3, 2, 2, 2}; // Example array int mostRepeated = Arrays.stream(numbers) .boxed() // Convert int to Integer .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) // Count occurrences .entrySet() .stream() .max(Map.Entry.comparingByValue()) // Find the max count .get() .getKey(); // Get the most frequent element System.out.println("Most Repeated Element: " + mostRepeated); } }
Output:
Most Repeated Element: 2
Explanation:
- Convert
int[]
to Stream →.boxed()
- Group elements and count occurrences →
Collectors.groupingBy(Function.identity(), Collectors.counting())
- Find the maximum count →
.max(Map.Entry.comparingByValue())
- Get the key (most frequent element) →
.get().getKey()
Alternative: Handling Multiple Max Elements
If multiple elements have the same highest frequency, return all:
import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; public class MostRepeatedElements { public static void main(String[] args) { int[] numbers = {1, 3, 2, 3, 4, 1, 3, 2, 2, 2}; Map<Integer, Long> frequencyMap = Arrays.stream(numbers) .boxed() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); long maxCount = Collections.max(frequencyMap.values()); // Get max frequency List<Integer> mostRepeated = frequencyMap.entrySet().stream() .filter(entry -> entry.getValue() == maxCount) .map(Map.Entry::getKey) .collect(Collectors.toList()); System.out.println("Most Repeated Elements: " + mostRepeated); } }
Output:
Most Repeated Elements: [2, 3]