写一个java程序使给定整数数组arr = [2,3,5,3,2,7,6,6,6,3,3,3,7,5,4,2,9,6,4,2,8,6,9,1,3,6,8,1,1,5,3,6,6,6,7,7,8]。从数组中找出出现频率最高的前 4个数字,并返回这四个数字以及对应的频数。
时间: 2024-09-11 18:12:39 浏览: 87
FindTheFirstMissingPositiveNumber:给定正负整数数组,找到第一个缺失的正整数
要解决这个问题,我们可以使用Java中的HashMap来统计每个数字出现的频数,然后将这些键值对(数字和频数)放入一个列表中,最后对这个列表进行排序,找出频数最高的前四个数字。
以下是一个简单的Java程序示例,用于找出数组中出现频率最高的前四个数字及其频数:
```java
import java.util.*;
public class TopFourFrequentNumbers {
public static void main(String[] args) {
int[] arr = {2, 3, 5, 3, 2, 7, 6, 6, 6, 3, 3, 3, 7, 5, 4, 2, 9, 6, 4, 2, 8, 6, 9, 1, 3, 6, 8, 1, 1, 5, 3, 6, 6, 6, 7, 7, 8};
// 创建一个HashMap来存储数字及其出现的次数
Map<Integer, Integer> frequencyMap = new HashMap<>();
for (int num : arr) {
frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
}
// 创建一个列表存储Entry,并按照频数降序排序
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(frequencyMap.entrySet());
list.sort((a, b) -> b.getValue() - a.getValue());
// 输出前四个出现频率最高的数字及其频数
for (int i = 0; i < 4 && i < list.size(); i++) {
System.out.println("数字: " + list.get(i).getKey() + ", 频数: " + list.get(i).getValue());
}
}
}
```
这段代码首先统计了数组中每个数字出现的次数,然后创建了一个列表来存储这些键值对,并按照频数进行降序排序。最后,它输出了出现频率最高的前四个数字及其次数。
阅读全文