java查找最大最频繁元素
我在Java中有一个值为的ArrayList
4, 4, 3, 3, 5, 6
我需要找到最频繁的值。如果多个值的出现次数相同,则返回最大值
在上面的例子中,我需要返回值4
private int getFrequentNumber(ArrayList<Integer> arr){
int popular = arr.get(0);
int count = 1;
int tempcount = 0;
int temp = 0;
for(int i = 0; i < arr.size(); i++) {
temp = arr.get(i);
tempcount = 0;
for(int j = 1; j < arr.size(); j++) {
if(temp == arr.get(j))
tempcount++;
}
if (tempcount > count) {
popular = temp;
count = tempcount;
}
}
return popular;
}
现在我有这个代码,所以它返回最频繁的数字,但我需要帮助返回最大最频繁的数字
# 1 楼答案
第二种方法是按照@triffic的说法对数据进行排序,但速度较慢(我想还是按照相同的顺序?)
您只需对数组进行排序即可
你的代码
# 2 楼答案
一种简单的方法是使用地图跟踪频率:
Demo
# 3 楼答案
使用列表上的流,可以根据条目的频率(计数收集器)对条目进行分组,然后找到最大频率。下面的比较器只是在频率相等时比较键(实际条目)(用于查找最高值
这个的输出是
# 4 楼答案
步骤1:对
ArrayList<Integer> arr
进行快速排序步骤2:在
ArrayList<Integer> arr
上进行迭代,正如您所做的那样# 5 楼答案
那些不想重新发明自行车的人可能会使用带有MultiSet集合的Guava库,该集合保存元素(在本例中为整数)及其频率
或类似的解决方案:
# 6 楼答案
您可以创建一个数组来存储这些数字的频率。计算完所有频率后,返回基于此数组的最大频率数