[英]how to create frequency table (array of integers)
我創建了一個int []數組,它將通過用戶輸入的分數填充。 我的任務是創建一個頻率表,該表計算用戶輸入某個分數的次數。 示例:用戶輸入以下分數,13,13,13,16,16,19,22。 然后,以表格形式13 - 3,16 - 2,19 - 1,22 - 1.抱歉壞英語
你可以這樣做:
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
這將完成這項工作
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);
}
}
}
在Java 8中,您可以執行此操作
Map<Integer, Long> freq = Arrays.stream(array).boxed().
collect(Collectors.groupingBy(Integer::intValue, Collectors.counting()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.