如何在Java8(lambda-exp或流)中计算字符串中每个字符的出现次数,而不是在传统方法中



样本输出一切正常:{=2,A=1,s=1,e=1,W=1,I=1,l=4}

你可以试试这个,

Arrays.stream("inputstring".split(""))
.map(String::toLowerCase)
.collect(Collectors.groupingBy(s -> s, LinkedHashMap::new, Collectors.counting()))
.forEach((k, v) -> System.out.println(k + " = " + v));

无序:

"All Is Well"
.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.forEach((k, v) -> System.out.println("'" + k + "' = " + v));

按字母顺序排列&下层:

"All Is Well"
.chars()
.mapToObj(c -> (char) c)
.map(Character::toLowerCase)
.collect(Collectors.groupingBy(s -> s, TreeMap::new, Collectors.counting()))
.forEach((k, v) -> System.out.println("'" + k + "' = " + v));

样本输出:

' ' = 2
'a' = 1
'e' = 1
'i' = 1
'l' = 4
's' = 1
'w' = 1

相关内容

最新更新