In this short article, we will write a Java program to count duplicate characters in a given String.
We will use Java 8 lambda expression and stream API to write this program.
Learn Java programming at https://www.javaguides.net/p/java-tutorial-learn-java-programming.html.
Learn Java 8 at https://www.javaguides.net/p/java-8.html.
Java 8 - Count Duplicate Characters from a String
package com.java.tutorials.programs;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Java 8 - Count Duplicate Characters from a String
*
* @author RAMESH
*
*/
public class CountDuplicateCharsJava8 {
public static void main(String[] args) {
// given input string
String input = "JavaJavaEE";
// convert string into stream
Map < Character, Long > result = input
.chars().mapToObj(c -> (char) c)
.collect(Collectors.groupingBy(c -> c, Collectors.counting()));
result.forEach((k, v) -> {
if (v > 1) {
System.out.println(k + " : " + v);
}
});
}
}
Output:
a : 4
E : 2
v : 2
J : 2
Let's rewrite the above program without using Java 8 features.
Java program that counts duplicate characters from a given string (without Java 8)
package com.java.tutorials.programs;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class CountDuplicateChars {
public static void main(String[] args) {
// given input string
String input = "JavaJavaEE";
// create a HashMap
Map < Character, Integer > countDuplicateMap = new HashMap < > ();
// Converts this string to a new character array.
char[] charArray = input.toCharArray();
for (char c: charArray) {
if (countDuplicateMap.containsKey(c)) {
// get value by key and increment it's value by a
countDuplicateMap.put(c, countDuplicateMap.get(c) + 1);
} else {
countDuplicateMap.put(c, 1);
}
}
for (Entry < Character, Integer > entry: countDuplicateMap.entrySet()) {
if (entry.getValue() > 1) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
}
Output:
a : 4
E : 2
v : 2
J : 2
Comments
Post a Comment
Leave Comment