gpt4 book ai didi

scala - Scala 与 Java 8 中的折叠操作

转载 作者:行者123 更新时间:2023-12-04 16:33:32 25 4
gpt4 key购买 nike

如何执行以下 Scala 操作以在 java 8 中查找字符串中出现频率最高的字符?

val tst = "Scala is awesomestttttts"
val op = tst.foldLeft(Map[Char,Int]())((a,b) => {
a+(b -> ((a.getOrElse(b, 0))+1))
}).maxBy(f => f._2)

这里的输出是
(Char, Int) = (t,6)

我能够在 Java 8 中获得这样的字符流:
Stream<Character> sch = tst.chars().mapToObj(i -> (char)i);

但无法弄清楚我们在 Java 8 中的 fold/foldLeft/foldRight 替代方案是什么

有人可以帮忙吗?

最佳答案

像这样的东西似乎与您提供的 Scala 代码相匹配(如果我理解正确的话):

String tst = "Java is awesomestttttts";
Optional<Map.Entry<Character, Long>> max =
tst.chars()
.mapToObj(i -> (char) i)
.collect(Collectors.groupingBy(Function.identity(),
Collectors.counting()))
.entrySet()
.stream()
.max(Comparator.comparing(Map.Entry::getValue));
System.out.println(max.orElse(null));

关于scala - Scala 与 Java 8 中的折叠操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35533336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com