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