| 本帖最后由 Fightin黑马 于 2014-9-1 23:49 编辑 
 答案是基于集合中的map集合,list集合实现的,需要具备集合所学知识
 这里用集合实现了一下,利用map集合存储键值对的原理记录每个数字出现的次数,因为我们java中对于map集合所给的方法都是操作key的,并没有给操作value的方法,用了半个小时查了些资料得出下面的代码,回头专门发个怎样对map集合按照值进行排序的帖子.ps...这个里面的编辑器不是很会用,排版懒透了package com.itcast.test;
 //问题:找出整型数组中数字出现次数最多的数字
 import java.util.*;                                                                                                                                                                                                                        //导入java.util.*的包使用util里面的各种类
 
 public class Test3 {
 public static void main(String[] args) {                                                                                                                                                //主函数
 
 int arr[]={3,3,3,2,3,2,3,5,6,7,8,5,4,34,23,2,33,43};                                                                                                                //定义原始数组
 TreeMap<Integer, Integer>treemap=new TreeMap<>();                                                                                //定义一个treemap(hashmap)用来接收数组中的数字,
 //key记录数组中出现的数字,value记录该数字出现的次数
 for (int i = 0; i < arr.length;i++) {                                                                                                                                                        //遍历数组
 if(treemap.containsKey(arr)){
 treemap.put(arr, treemap.get(arr)+1);                                                                                                                //如果集合中包含这个数字,将这个数的次数加一 覆盖原来的value值
 }else{
 treemap.put(arr,1);                                                                                                                                                                                //如果集合中没有这个数字,存入该数字,并另value为1
 }
 }
 //下面代码是用来实现对map集合中按照值排序
 List<Map.Entry<Integer, Integer>> list =
 new ArrayList<Map.Entry<Integer, Integer>>(treemap.entrySet());                                //新建一个list集合用来接收treemap中的键值对,在构造函数中调用传入集合的构造函数
 
 Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {                           //调用Collections中的可以自定义比较器的sort方法,使用匿名内部类新建一个比较器
 public int compare(Map.Entry<Integer, Integer> o1,                                                                                 //重写Comparator中的compare方法;
 Map.Entry<Integer, Integer> o2) {
 return (o2.getValue() - o1.getValue());
 }
 });                                                                                                                                                                                                                                                        //经过排序的list集合中索引为0的对象就是数组中出现次数最多的数字
 
 System.out.println("出现最多次数的数字是:"+list.get(0).getKey()+                                                        //调用list集合中第一个键值对的getKey和getvalue方法打印这个出现次数最多的数字
 "\r出现次数是:"+list.get(0).getValue());
 
 }
 
 }
 
 
 |