如何使用 Java 8 查找字符串中第一个重复字符和非重复字符
·
1.创建字符流:“abcsdnvs”.chars().mapToObj(i -> (char)i)
2.使用收集器将这些字符分组:.collect(Collectors.groupingBy(Function.identity(), LinkedHashMap::new, Collectors.counting()));
public static void main(String[] args) {
Map<Character, Long> collect = "abcsdnvs".chars().mapToObj(i -> (char)i).collect(Collectors.groupingBy(Function.identity(), LinkedHashMap::new, Collectors.counting()));
collect.forEach( (x,y) -> System.out.println( "Key: " + x + " Val: " + y));
Optional<Character> firstNonRepeat = collect.entrySet().stream().filter( (e) -> e.getValue() == 1).map(e -> e.getKey()).findFirst();
if(firstNonRepeat.isPresent()) {
System.out.println("First non repeating:" + firstNonRepeat.get());
}
Optional<Character> firstRepeat = collect.entrySet().stream().filter( (e) -> e.getValue() > 1).map(e -> e.getKey()).findFirst();
System.out.println("First repeating:" + firstRepeat.orElse(null));
}
更多推荐
所有评论(0)