Learnitweb

Java program to find the first non-repeated character in a string

You can find the first non-repeated character in a string using Java 8 Streams by counting occurrences and filtering the first unique character.

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

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

        Character firstNonRepeated = str.chars()
                .mapToObj(c -> (char) c) // Convert int to Character
                .collect(Collectors.groupingBy(Function.identity(), LinkedHashMap::new, Collectors.counting())) // Preserve order
                .entrySet()
                .stream()
                .filter(entry -> entry.getValue() == 1) // Find unique character
                .map(Map.Entry::getKey)
                .findFirst()
                .orElse(null);

        System.out.println("First Non-Repeated Character: " + firstNonRepeated);
    }
}

Output:

First Non-Repeated Character: w

Alternative: Using Traditional Map Approach (Better Performance)

import java.util.LinkedHashMap;
import java.util.Map;

public class FirstNonRepeatedChar {
    public static void main(String[] args) {
        String str = "swiss";
        Map<Character, Integer> charCount = new LinkedHashMap<>();

        for (char c : str.toCharArray()) {
            charCount.put(c, charCount.getOrDefault(c, 0) + 1);
        }

        for (Map.Entry<Character, Integer> entry : charCount.entrySet()) {
            if (entry.getValue() == 1) {
                System.out.println("First Non-Repeated Character: " + entry.getKey());
                return;
            }
        }
        System.out.println("No Non-Repeated Character Found");
    }
}