java如何找出一个int数组中出现次数最多
2个回答
展开全部
其实这个问题,涉及到两个过程
首先是统计数组中数字出现的次数,应该要有类似“数字 - 出现次数”这种结果出现,其实就是Map结构的key和value
然后就是找出出现次数最大的一个,并返回对应的数字即可
针对以上两个过程,推荐采用Java8的流(Stream)来处理,代码比较简单易懂,因此下面的示例代码,请在JDK8的环境下运行
int[] arr = {1, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5};
// 过程1 Collectors.groupingBy代表是分类,按照本身Function.identity()进行分类,那相同数字就会放在一起,Collectors.counting是统计相同数字的个数
Map<Integer, Long> map = IntStream.of(arr).boxed().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println("数字出现次数统计(数字=次数):" + map);
// 过程2 max方法是根据比较器(按照map的value进行排序)找出最大值
Optional<Integer> maxOptional = map.entrySet().stream().max(Comparator.comparing(Map.Entry::getValue)).map(Map.Entry::getKey);
System.out.println("出现次数最多的数字:" + maxOptional.get());
最后结果如下
展开全部
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Mytest
{
/**
* @param args
*/
public static void main(String[] args)
{
int[] array = {2,3,1,2,2,5,6,8,2,3,2,4,2};
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < array.length; i++)
{
if(map.containsKey(array[i]))
{
int temp = map.get(array[i]);
map.put(array[i],temp+1);
}
else
{
map.put(array[i],1);
}
}
Collection<Integer> count = map.values();
int maxCount = Collections.max(count);
int maxnum = 0;
for (Map.Entry<Integer,Integer> entry:map.entrySet())
{
if (maxCount==entry.getValue())
{
maxnum = entry.getKey();
}
}
System.out.println("出现次数最多的数字为"+maxnum);
System.out.println("改次数一共出现了"+maxCount+"次");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询