我试图计算数组中每个元素的频率。但是有一个限制,就是我不想按排序顺序打印元素。

我的输入就像

7 1 2 1 1 6 8 7


输出以这种格式
    {1 = 3,2 = 1,6 = 1,7 = 2,8 = 1}

我不要

我的输出应该像

7 2

1 3

2 1

6 1

8 1


对于上述输入。而且我不需要任何分隔符

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        int a[]=new int[n],temp=0,count=0,flag=-1,b[]=new int[n];
        for(int i=0;i<n;i++)
        {
            a[i]=s.nextInt();
        }
        Map<Integer,Integer> hm = new HashMap();

        for(int x:a){
            if(!hm.containsKey(x)){
                hm.put(x,1);
            }else{
                hm.put(x, hm.get(x)+1);
            }
        }
        System.out.println(hm);
    }
}

最佳答案

使用LinkedHashMap保持插入顺序。然后使用

hm.entrySet().forEach(e ->  System.out.println(e.getKey() + " " + e.getValue()));


而不是仅打印地图,而是对其进行迭代并打印每个键和值。

关于java - 不按排序顺序计算数组中每个元素的出现顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52725115/

10-09 09:15