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"); } }