Java Online Compiler
Example: FindFirstNonRepeatingStreamCounting in Java
C
C++
C#
Java
Python
PHP
Main.java
STDIN
Run
// FindFirstNonRepeatingStreamCounting import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; public class Main { public static Optional<Character> findFirstNonRepeatingStreamCounting(String s) { if (s == null || s.isEmpty()) { return Optional.empty(); } // Step 1: Stream characters and collect into a LinkedHashMap with counts // LinkedHashMap ensures iteration order matches character first appearance Map<Character, Long> charCounts = s.chars() .mapToObj(c -> (char) c) .collect(Collectors.groupingBy( Function.identity(), // Key: the character itself LinkedHashMap::new, // Map factory: ensures LinkedHashMap is used Collectors.counting() // Value: count of occurrences )); // Step 2: Stream the entries of the map, filter for counts of 1, and find the first key return charCounts.entrySet().stream() .filter(entry -> entry.getValue() == 1) .map(Map.Entry::getKey) .findFirst(); } public static void main(String[] args) { System.out.println("\n--- Stream API with Counting Approach ---"); System.out.println("stress -> " + findFirstNonRepeatingStreamCounting("stress").orElse(null)); // t System.out.println("aabbc -> " + findFirstNonRepeatingStreamCounting("aabbc").orElse(null)); // c System.out.println("aabb -> " + findFirstNonRepeatingStreamCounting("aabb").orElse(null)); // null System.out.println("java -> " + findFirstNonRepeatingStreamCounting("java").orElse(null)); // j System.out.println(" -> " + findFirstNonRepeatingStreamCounting("").orElse(null)); // null System.out.println("zzzaac -> " + findFirstNonRepeatingStreamCounting("zzzaac").orElse(null)); // c } }
Output
Clear
ADVERTISEMENTS