First we must import several types into the Java program. In main() we call into 2 custom functions, getFrequencies() and displaySortedFrequencies().
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map.Entry;
import java.util.HashMap;
public class Program {
public static void main(String[] args) {
String[] values = {
"bird",
"cat",
"bird",
"dog",
"bird",
"man",
"frog",
"cat" };
// Step 1: get list of elements.
ArrayList<String> valuesList = new ArrayList<>();
Collections.addAll(valuesList, values);
// Step 2: add up frequencies of all elements in list.
var freqs = getFrequencies(valuesList);
// Step 3: sort by frequencies and display elements.
displaySortedFrequencies(freqs);
}
static HashMap<String, Integer> getFrequencies(ArrayList<String> values) {
HashMap<String, Integer> result = new HashMap<>();
for (String value : values) {
// Increment frequency starting at 0 if not found.
int frequency = result.getOrDefault(value, 0);
result.put(value, frequency + 1);
}
return result;
}
static void displaySortedFrequencies(HashMap<String, Integer> frequencies) {
// Convert to array list.
ArrayList<Entry<String, Integer>> array = new ArrayList<>();
array.addAll(frequencies.entrySet());
// Sort elements.
// Compare in reverse order for descending sort.
Collections.sort(array, (a, b) -> Integer.compare(b.getValue(), a.getValue()));
// Display all results in order.
for (Entry<String, Integer> entry : array) {
System.out.println(entry.getKey() +
" " + entry.getValue());
}
}
}
bird 3
cat 2
frog 1
man 1
dog 1