Learnitweb

Java program to find duplicate characters in a String

import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class DuplicateCharacters {
    public static void main(String[] args) {
        String str = "programming";

        Map<Character, Long> charCountMap = str.chars() // Convert to IntStream
                .mapToObj(c -> (char) c) // Convert int to Character
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); // Count occurrences

        System.out.println("Duplicate Characters:");
        charCountMap.entrySet().stream()
                .filter(entry -> entry.getValue() > 1) // Keep only duplicates
                .forEach(entry -> System.out.println(entry.getKey() + " -> " + entry.getValue()));
    }
}

Output:

Duplicate Characters:
r -> 2
g -> 2
m -> 2

Alternative: Using Set for Better Performance

import java.util.HashSet;
import java.util.Set;

public class DuplicateCharactersUsingSet {
    public static void main(String[] args) {
        String str = "programming";
        Set<Character> uniqueChars = new HashSet<>();
        Set<Character> duplicates = str.chars()
                .mapToObj(c -> (char) c)
                .filter(c -> !uniqueChars.add(c)) // Add returns false if already present
                .collect(Collectors.toSet());

        System.out.println("Duplicate Characters: " + duplicates);
    }
}