Java Online Compiler
Example: Sort Array Elements by Frequency in Java
C
C++
C#
Java
Python
PHP
Main.java
STDIN
Run
// Sort Array Elements by Frequency import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; // Main class containing the entry point of the program public class Main { public static void main(String[] args) { int[] originalArray = {1, 2, 3, 2, 1, 4, 1, 5, 5, 5}; System.out.println("Original Array:"); printArray(originalArray); // Step 1: Convert int[] to List<Integer> List<Integer> list = new ArrayList<>(); for (int num : originalArray) { list.add(num); } // Step 2: Calculate frequency of each element using a HashMap Map<Integer, Integer> frequencyMap = new HashMap<>(); for (int num : list) { frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1); } // Step 3: Sort the list using a custom Comparator Collections.sort(list, new Comparator<Integer>() { @Override public int compare(Integer n1, Integer n2) { int freq1 = frequencyMap.get(n1); int freq2 = frequencyMap.get(n2); // Primary sort: by frequency (descending) if (freq1 != freq2) { return freq2 - freq1; // Higher frequency comes first } else { // Secondary sort: by value (ascending) if frequencies are equal return n1 - n2; // Smaller value comes first } } }); System.out.println("\nArray sorted by Frequency:"); printList(list); } // Helper method to print an int array public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + (i == arr.length - 1 ? "" : ", ")); } System.out.println(); } // Helper method to print a List of Integers public static void printList(List<Integer> list) { for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + (i == list.size() - 1 ? "" : ", ")); } System.out.println(); } }
Output
Clear
ADVERTISEMENTS