JavaはHashMapを利用して乱数の個数を統計する

2534 ワード

コードは以下の通り、配列で作るよりも分かりやすい感じです
import java.util.*;

public class SearchTest {
    public static void main(String[] args) {
        int a[] = new int[50];
        Random r = new Random();
        for(int i = 0;i<50;i++)
        {
            a[i] = r.nextInt(40)+10;
        }
        SearchTest st = new SearchTest();
        a = st.asort(a);
        System.out.println("    50 (10,50)  ,   :");
        for(int i = 0;i<50;i++)
        {
            System.out.print(a[i]+",");
        }
        System.out.println();
        System.out.println("      :");
        System.out.println();
        st.searchnum2(a);
    }


    public int[] asort(int[] a)//    
    {
        int temp;
        for(int i = 0;ia[j+1])
                {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }

        return a;
    }
    public void searchnum2(int[] a)                        //    (  map)
    {
        HashMap map = new HashMap();

        for(int i = 0;i

プログラム実行結果は
    50 (10,50)  ,   :
10,11,11,14,14,15,15,16,16,22,22,23,26,27,27,27,27,28,28,29,29,30,31,31,32,32,32,34,35,35,35,35,36,36,37,38,39,39,41,45,45,45,45,46,46,48,48,48,49,49,
      :

  10 1 
  11 2 
  14 2 
  15 2 
  16 2 
  22 2 
  23 1 
  26 1 
  27 4 
  28 2 
  29 2 
  30 1 
  31 2 
  32 3 
  34 1 
  35 4 
  36 2 
  37 1 
  38 1 
  39 2 
  41 1 
  45 4 
  46 2 
  48 3 
  49 2 

ごく簡単な書き方がある
public void searchnum3(int[] a)
    {
        Map map = new HashMap();
        for(Integer in :a)
        {
            map.put(in,map.get(in)==null?1:map.get(in)+1);
        }
        System.out.println(map);
    }

結果は次のとおりです.
    50 (10,50)  ,   :
10,11,11,12,12,13,13,15,16,16,16,16,17,17,18,21,22,23,24,24,24,25,26,26,28,30,30,30,31,31,34,34,35,37,38,39,43,44,44,44,44,45,45,45,46,46,46,47,47,47,
      :

{10=1, 11=2, 12=2, 13=2, 15=1, 16=4, 17=2, 18=1, 21=1, 22=1, 23=1, 24=3, 25=1, 26=2, 28=1, 30=3, 31=2, 34=2, 35=1, 37=1, 38=1, 39=1, 43=1, 44=4, 45=3, 46=3, 47=3}