gpt4 book ai didi

java - Java 是否提供任何库来找出数组中出现次数最多的数字?

转载 作者:行者123 更新时间:2023-12-01 17:50:17 25 4
gpt4 key购买 nike

只是为了进一步解释标题的含义:

int[] array = {1,2,1,3,2,1,4};

在上面声明的数组中,1 出现了 3 次,因此数组中出现了最大频率。 Java 是否提供了任何东西来找出这一点?

最佳答案

您可以使用新的 Java 8 Streaming API 来实现:

int[] array = {1, 2, 1, 3, 2, 1, 4};
Optional<Integer> max = Arrays.stream(array) // IntStream
.boxed() // Stream<Integer>
.collect(Collectors.groupingBy(
Function.identity(),
Collectors.counting())
) // Map<Integer, Long>
.entrySet() // Set<Map.Entry<Integer, Long>>
.stream() // Stream<Map.Entry<Integer, Long>>
.max(Comparator.comparing(Entry::getValue)) // Optional<Map.Entry<Integer, Long>>
.map(Map.Entry::getKey); // Optional<Integer>

我对每一行都进行了评论,该行之后当前返回什么类型,以明确我们当前正在使用的类型。

简而言之,我们从数组创建一个 Stream,然后计算不同整数的每次出现,然后选择出现次数最多的一个整数。

Optional<Integer>返回,因为流可能为空,但在您的情况下,可选值将始终保存一个值。

您可以从可选的多种方式中提取值:

  1. int i = max.get() ;如果没有值,可能会抛出异常
  2. int i = max.orElse(-1) ;它允许您设置默认值

关于java - Java 是否提供任何库来找出数组中出现次数最多的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50962081/

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