隨機生成50個數字(整數),每個數字的範圍是[10, 50],統計每個數字出現的次數以及出現次數最多的數字與它的個數,最後將每個數字及其出現次數打印出來,如果某個數字出現次數爲0,則不要打印它。打印時按照數字的升序排列。
方法一:使用數組實現
package Map;
import java.util.Random;
/**
* @Auther: Xinbai
* @Date:2020/6/4 21:45
*/
public class Test{
public static void main(String[] args) {
Random random = new Random();
//count的下標0~40加10後就可以表示產生的隨機數10~50了
int[] count = new int[41];
for (int i = 0; i < 50; i++) {
int number = random.nextInt(41) + 10;
/*
24 * 1.(number - 10)表示產生的隨機數在數組的位置
25 * 2.count[number - 10]++;計算number出現的次數
26 */
count[number - 10]++;
}
for (int i = 0; i < count.length; i++) {
if (0 == count[i]) {
continue;
}
System.out.println((10 + i) + "出現次數:" + count[i]);
}
int max = count[0];
for (int i = 0; i < count.length; i++) {
if (max < count[i]) {
max = count[i];
}
}
System.out.println("出現的最大次數爲:" + max + "\n" + "出現最大次數的數字爲:");
for (int i = 0; i < count.length; i++) {
if (max == count[i]) {
System.out.println(i + 10);
}
}
}
}
方法二:使用集合實現
package Map;
import java.util.*;
/**
* @Auther: Xinbai
* @Date:2020/6/4 21:45
*/
public class Test {
public static void main(String[] args) {
//這邊使用TreeMap是因爲可以使用其自然順序排列,同時如果Map中不存在的元素也不會打印出來。
Map map = new TreeMap(); //使用多態度,實際開發中這種寫法很常見
Random random = new Random();
for (int i = 0; i < 50; i++) {
int number = random.nextInt(41) + 10; //生成[10,50]之間的隨機數
/*
* 使用Map中key用來存放隨機生成的數,value用來存放每個數字的次數。
* 如果Map中的key(隨機生成的數字)不存在,則將其value(次數)置1,如果如果Map中的key(隨機生成的數字)存在,則將其value(次數)取出 + 1再放入value中
*/
Integer in = new Integer(number);
//判斷Map中key是不存在,value置1
if (map.get(in) == null) {
map.put(in, new Integer(1));
}
//否則,Map中的key存在,value取出 +1.
else {
int value = ((Integer) map.get(in)).intValue();
map.put(in, new Integer(value + 1));
}
}
//使用Collections類中max()打印出最多次數。
Collection cols = map.values();
Integer maxOccurs = (Integer) Collections.max(cols);
//使用Map.Entry將封裝好的一對key與value值打印,這裏使用第二種遍歷Map的方式,詳細請參考前兩講內容。
Set set = map.entrySet();
List list = new ArrayList(); //定義一個集合用來保存最大的value對應的key
for (Iterator iter = set.iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry) iter.next();
Integer key = (Integer) entry.getKey();
Integer value = (Integer) entry.getValue();
//判斷value值是否做大,也就是出現最多,找出這個value,同時將其相對應的key保存在list中。
if (value.intValue() == maxOccurs.intValue()) {
list.add(key);
}
System.out.println(key + " : " + value);
}
System.out.println("出現次數最多的爲: " + maxOccurs);
System.out.println("這些數字分別是: ");
//遍歷List集合將最大value對應的key取出.
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
Integer inte = (Integer) iter.next();
System.out.println(inte);
}
}
}