写了一个显示重复次数最多的最大数字。不过感觉实现的方法不是很好,不知哪位强人能深入优化一下。
输出的结果
最大值:100
重复数目最多7出现了3次
重复数目最多15出现了3次
重复数目最多28出现了3次
重复数目最多30出现了3次
重复数目最多38出现了3次
重复数目最多51出现了3次
重复数目最多50出现了3次
重复数目最多69出现了3次
重复数目最多90出现了3次
重复数目最多99出现了3次
重复最多的最大值:99
代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Random {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[] i=new int[100];
for(int n=0;n<i.length;n++){
i[n]=(int)(Math.random()*100+1);
System.out.println(i[n]);
}
int max=-1;
Map<Integer, Integer> m=new HashMap<Integer, Integer>();
for(int n=0;n<i.length;n++){
if(max<i[n]){
max=i[n];
}
Object o=m.get(i[n]);
if(o==null){
m.put(i[n], 1);
}else{
int t=m.get(i[n])+1;
m.put(i[n], t);
}
}
int maxtimes=0;
ArrayList<Integer> timenum=new ArrayList<Integer>();
Iterator<Map.Entry<Integer, Integer>> it=m.entrySet().iterator();
while(it.hasNext()){
Entry<Integer, Integer> entry=it.next();
System.out.println(entry.getKey()+":"+entry.getValue());
if(maxtimes<entry.getValue()){
maxtimes=entry.getValue();
timenum=new ArrayList<Integer>();
timenum.add(entry.getKey());
}else if(maxtimes==entry.getValue()){
timenum.add(entry.getKey());
}
}
System.out.println("最大值:"+max);
int maxtt=-1;
for(int u=0;u<timenum.size();u++){
if(maxtt<timenum.get(u)){
maxtt=timenum.get(u);
}
System.out.println("重复数目最多"+timenum.get(u)+"出现了"+maxtimes+"次");
}
System.out.println("重复最多的最大值:"+maxtt);
}
}
温馨提示:内容为网友见解,仅供参考