Answer
Frequency of Each Character in a String
Method 1: HashMap
Java
import java.util.*;
public class CharFrequency {
public static void main(String[] args) {
String str = "automation";
HashMap<Character, Integer> freq = new HashMap<>();
for (char c : str.toCharArray()) {
freq.put(c, freq.getOrDefault(c, 0) + 1);
}
System.out.println("Character Frequencies:");
for (Map.Entry<Character, Integer> entry : freq.entrySet()) {
System.out.println("'" + entry.getKey() + "' → " + entry.getValue());
}
}
}
Output
CODE
Character Frequencies:
'a' → 3
'u' → 1
't' → 2
'o' → 2
'm' → 1
'i' → 1
'n' → 1
Sorted by Frequency (Descending)
Java
String str = "automation testing";
Map<Character, Long> freq = str.chars()
.filter(c -> c != ' ')
.mapToObj(c -> (char) c)
.collect(java.util.stream.Collectors.groupingBy(
c -> c, java.util.stream.Collectors.counting()));
// Sort by value descending
freq.entrySet().stream()
.sorted(Map.Entry.<Character, Long>comparingByValue().reversed())
.forEach(e -> System.out.println("'" + e.getKey() + "' → " + e.getValue()));
Output
CODE
't' → 4
'a' → 2
'i' → 2
'o' → 2
'n' → 2
's' → 1
'e' → 1
'u' → 1
'm' → 1
'g' → 1
Find Most and Least Frequent Character
Java
String str = "automation";
Map<Character, Integer> freq = new HashMap<>();
for (char c : str.toCharArray())
freq.put(c, freq.getOrDefault(c, 0) + 1);
char maxChar = Collections.max(freq.entrySet(),
Map.Entry.comparingByValue()).getKey();
char minChar = Collections.min(freq.entrySet(),
Map.Entry.comparingByValue()).getKey();
System.out.println("Most frequent: '" + maxChar + "' (" + freq.get(maxChar) + " times)");
System.out.println("Least frequent: '" + minChar + "' (" + freq.get(minChar) + " time)");
Output
CODE
Most frequent: 'a' (3 times)
Least frequent: 'u' (1 time)
Print Frequency Chart
Java
String str = "banana";
Map<Character, Long> freq = str.chars()
.mapToObj(c -> (char)c)
.collect(java.util.stream.Collectors.groupingBy(
c -> c, LinkedHashMap::new, java.util.stream.Collectors.counting()));
freq.forEach((ch, count) -> {
System.out.printf("'%c': %s (%d)%n", ch, "*".repeat(count.intValue()), count);
});
Output
CODE
'b': * (1)
'a': *** (3)
'n': ** (2)
Automation Testing Relevance
Java
// Count tag occurrences on a page
List<WebElement> elements = driver.findElements(By.cssSelector("*"));
Map<String, Long> tagFreq = elements.stream()
.collect(Collectors.groupingBy(
e -> e.getTagName().toLowerCase(), Collectors.counting()));
tagFreq.entrySet().stream()
.sorted(Map.Entry.<String, Long>comparingByValue().reversed())
.limit(5)
.forEach(e -> System.out.println(e.getKey() + ": " + e.getValue()));
