我试图计算数组中每个元素的频率。但是有一个限制,就是我不想按排序顺序打印元素。
我的输入就像
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/