Java Online Compiler
Example: SortArrayByFrequencyStreams in Java
C
C++
C#
Java
Python
PHP
Main.java
STDIN
Run
// SortArrayByFrequencyStreams import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; // Main class containing the entry point of the program public class Main { public static void main(String[] args) { int[] arr = {2, 3, 2, 4, 5, 12, 2, 3, 3, 3, 12}; System.out.println("Original Array: " + Arrays.toString(arr)); // Step 1: Count frequencies using Streams Map<Integer, Long> frequencyMap = Arrays.stream(arr) .boxed() // Convert int[] to Stream<Integer> .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); // Step 2: Create a list of elements from the original array List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList()); // Step 3: Sort the list using a custom comparator that utilizes the frequency map list.sort(Comparator .<Integer>comparing(num -> frequencyMap.get(num), Comparator.reverseOrder()) // Sort by frequency decreasing .thenComparing(Function.identity()) // Then by natural order (ascending value) if frequencies are equal ); System.out.println("Sorted by Frequency (Decreasing) using Streams: " + list); } }
Output
Clear
ADVERTISEMENTS