2016-07-31 36 views
1

我做了一個int []數組,它將按用戶輸入的分數填充。我的任務是創建一個頻率表,用於統計用戶輸入某個分數的次數。 示例:用戶輸入了以下分數13,13,13,16,16,19,22。然後,以表格形式13 - 3,16 - 2,19 - 1,22 - 1對不起不好英語如何創建頻率表(整數數組)

回答

0

你可以這樣做:

Map<Integer, Integer> numberCountMap = .... 
for (int i=0; i<numbers.length; i++) { 
    numberCountMap.compute(numbers[i], (key, value) -> value == null ? 1 : value + 1); 
} 
//print map or sort by value if you need most frequent one to be on top 
+0

謝謝先生!我忘了提及我已經使用冒泡排序按升序排序。不幸的是,我們不允許使用那個「numberCountMap ...」的東西。我們只是基礎。 –

0

這將做的工作

import java.util.HashSet; 
import java.util.Set; 
public class NumbersInArray { 
    public static void main(String[] args) { 
     int [] arr = {1,2,1,1,5,5,5,3,4,5,6}; 
     Set<Integer> set = new HashSet(); 

     //adding numbers to set will remove duplicates 
     for(int i =0 ; i<arr.length;i++) { 
      set.add(arr[i]); 
     } 
     int counter = 0; 
     int[] arrayToCheck = set.stream().mapToInt(Number::intValue).toArray(); 
     for(int i = 0; i<set.size(); i++) { 
      counter = 0; 
      for(int j =0; j<arr.length;j++) { 
       if(arrayToCheck[i]== arr[j]) { 
        counter++; 
       } 
      } 
      System.out.println(arrayToCheck[i] + "-" + counter); 
     } 
    } 
} 
0

在Java 8,你可以做到這一點

Map<Integer, Long> freq = Arrays.stream(array).boxed(). 
       collect(Collectors.groupingBy(Integer::intValue, Collectors.counting()));