用java定义一个一维数组,其中随机生成500个1到50之间整数,输出出现最多的偶

如题所述

static void ss() {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
Integer[] nums = new Integer[500];// 定义一个长度500的整数组
Random ra = new Random();
// 循环给数组赋值(随机产生值)
for (int i = 0; i < nums.length; i++) {
nums[i] = ra.nextInt(50) + 1;// 1-50之间
}
Integer count = 0;// 出现的次数
for (int i = 0; i < nums.length; i++) {
if (nums[i] % 2 == 0) {
for (int j = 0; j < nums.length; j++) {
if (nums[i].equals(nums[j])) {
count++;
}
if (j == nums.length - 1) {// 最后赋值给map
map.put(nums[i], count);
count = 0;
}
}
}
}
System.out.println("排序前:" + map);
List<Map.Entry<Integer, Integer>> mappingList = null;
mappingList = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());
Collections.sort(mappingList,
new Comparator<Map.Entry<Integer, Integer>>() {
public int compare(Map.Entry<Integer, Integer> mapping1,
Map.Entry<Integer, Integer> mapping2) {
// 降序或升序只需要更改参数位置
return mapping2.getValue().compareTo(
mapping1.getValue());
}
});
System.out.print("排序后:");
for (Map.Entry<Integer, Integer> mapping : mappingList) {
System.out.print(mapping.getKey() + ":" + mapping.getValue() + "\t");
}
String[] str = mappingList.get(0).toString().split("=");
System.out.println("\n出现次数最多的偶数:"+str[0]+",出现的次数为:"+str[1]);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-24
你可以这样做!定义一个Map<int,int>,key和value分别对应为:数字和出现的次数,而且再做循环的时候你直接将不是偶数的过滤掉,那么在List<Map<int,int>>中存放的内容就只有偶数以及偶数对应出现的次数,那么拿出value最大的即可!这样做的效率会高点!
第2个回答  2014-10-24
package df.tests;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
int[] array = new int[500];
Map<String, String> map = new HashMap<String, String>();
System.out.print("随机生成的500个数是:");
for(int i=0; i<500; i++) {
int data = (int)(Math.random() * 50) + 1;
array[i] = data;
System.out.print(data + " ");
if(data % 2 == 0) {
if(map.containsKey(String.valueOf(data))) {
int count = Integer.parseInt(map.get(String.valueOf(data)).toString());
count++;
map.put(String.valueOf(data), String.valueOf(count));
} else {
map.put(String.valueOf(data), String.valueOf(1));
}
}
}

int maxCount = 0;
for(Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext();) {
int curValue = Integer.parseInt(it.next().getValue());
if(curValue > maxCount) {
maxCount = curValue;
}
}

List<String> list = new ArrayList<String>();

for(Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, String> curMap = it.next();
if(Integer.parseInt(curMap.getValue()) == maxCount) {
list.add(curMap.getKey());
}
}

System.out.println();
System.out.print("其中" + list.size() + "个偶数出现次数最多,分别是: ");
for(String data : list) {
System.out.print(data + " ");
}
System.out.print(" ,出现了" + maxCount + "次");
}

}
相似回答