Home
Java
ArrayList Common Elements
Updated Sep 14, 2023
Dot Net Perls
Common elements. Suppose we have an ArrayList of Strings that may contain duplicate elements, and we want to find the most common one. We can do this by sorting the elements by their frequencies.
ArrayList
With a HashMap, we can determine how many times each unique string appears in the ArrayList. And then with that data, we can sort based on frequency counts.
Example. First we must import several types into the Java program. In main() we call into 2 custom functions, getFrequencies() and displaySortedFrequencies().
Step 1 We convert our String array into an ArrayList, as most Java programs will store their data in ArrayList instances.
Collections.addAll
Step 2 We call getFrequencies(), which loops over the Strings and increments a frequency count for each string in a HashMap.
for
HashMap
Step 3 DisplaySortedFrequencies converts the HashMap of frequencies to an ArrayList, and then sorts it by the counts in descending order.
Convert HashMap
Sort HashMap
Lambda
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
Results. We can determine that the string "bird" occurred most often in the input String array with 3 instances. And other strings like "dog" only occurred once.
By combining several concepts, and converting a HashMap to an ArrayList, we can determine the most common elements in a list. This can be useful for simple data analysis in Java programs.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Sep 14, 2023 (new).
Home
Changes
© 2007-2025 Sam Allen