有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何创建频率表(整数数组)

我制作了一个int[]数组,它将由用户输入的分数填充。我的任务是创建一个频率表,计算用户输入某个分数的次数。 示例:用户输入以下分数,13,13,13,16,16,19,22。然后,以表格形式13-3、16-2、19-1、22-1。对不起,英语不好


共 (3) 个答案

  1. # 1 楼答案

    这就行了

    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);
            }
        }
    }
    
  2. # 2 楼答案

    在Java8中,您可以这样做

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

    您可以执行以下操作:

    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