我想找到java数组中所有元素的频率?

我想找到java数组中所有元素的频率?,java,arrays,Java,Arrays,我是java新手,我想知道如何找到java数组中每个元素的频率? 这是我的代码: public static void main(String[] args) { int vl=0; int a[]={1,2,3,4}; for(int i=0;i<a.length;i++){ for(int j=i+1;j<a.length;j++){ if(a[i]==a[j]){ vl++;

我是java新手,我想知道如何找到java数组中每个元素的频率? 这是我的代码:

public static void main(String[] args) {
    int vl=0;
    int a[]={1,2,3,4};

    for(int i=0;i<a.length;i++){
        for(int j=i+1;j<a.length;j++){
        if(a[i]==a[j]){
            vl++; 
            System.out.println(vl);


        }else System.out.println(vl);
        }
    }

}
publicstaticvoidmain(字符串[]args){
int vl=0;
int a[]={1,2,3,4};
对于(inti=0;i
import java.util.Scanner;
公共类计数
{
公共静态void main(字符串[]args)
{
int n,x,count=0,i=0;
扫描仪s=新的扫描仪(System.in);
System.out.print(“在数组中输入所需的元素数量:”);
n=s.nextInt();
int a[]=新的int[n];
System.out.println(“输入所有元素:”);
对于(i=0;i
该程序可以一次给出阵列中一个元素的频率

如果你能做到的话。 您可以对所有事件进行迭代。

import java.util.Scanner;
公共类计数
{
公共静态void main(字符串[]args)
{
int n,x,count=0,i=0;
扫描仪s=新的扫描仪(System.in);
System.out.print(“在数组中输入所需的元素数量:”);
n=s.nextInt();
int a[]=新的int[n];
System.out.println(“输入所有元素:”);
对于(i=0;i
该程序可以一次给出阵列中一个元素的频率

如果你能做到的话。
您可以对所有出现的情况进行迭代。

我建议您使用基于哈希映射的实现,其中哈希映射中的键是数组元素,值是元素的频率


迭代整个数组后,可以获得哈希映射的键集并打印所有元素的频率。这种方法在时间复杂度方面会更有效。

我建议您使用基于哈希映射的实现,其中哈希映射中的键是数组元素,值是元素


迭代整个数组后,可以获得哈希映射的键集并打印所有元素的频率。这种方法在时间复杂度方面会更有效。

一种可能的方法是使用
哈希映射,其中映射键是元素,值是元素频率:

int a[] = {1,2,3,4,2,3};
HashMap<Integer, Integer> frequency = new HashMap<>();
for(int i = 0; i < a.length; i++){
    if (frequency.containsKey(a[i])) {
        frequency.put(a[i], frequency.get(a[i]) + 1 );
    } else {
        frequency.put(a[i], 1);
    }
}
System.out.println(frequency); 
inta[]={1,2,3,4,2,3};
HashMap频率=新HashMap();
for(int i=0;i
或更多Java-8方法:

Map<Integer,Long> f = Arrays.stream(a).boxed().
      collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(f);
Map f=Arrays.stream(a).boxed()。
collect(Collectors.groupingBy(Function.identity(),Collectors.counting());
系统输出打印ln(f);

实现这一点的一种可能方法是使用
HashMap
,其中map键是元素,值是元素频率:

int a[] = {1,2,3,4,2,3};
HashMap<Integer, Integer> frequency = new HashMap<>();
for(int i = 0; i < a.length; i++){
    if (frequency.containsKey(a[i])) {
        frequency.put(a[i], frequency.get(a[i]) + 1 );
    } else {
        frequency.put(a[i], 1);
    }
}
System.out.println(frequency); 
inta[]={1,2,3,4,2,3};
HashMap频率=新HashMap();
for(int i=0;i
或更多Java-8方法:

Map<Integer,Long> f = Arrays.stream(a).boxed().
      collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(f);
Map f=Arrays.stream(a).boxed()。
collect(Collectors.groupingBy(Function.identity(),Collectors.counting());
系统输出打印ln(f);

你期望的结果输出是什么?你期望的结果输出是什么?给OP一个答案是适得其反的,尤其是没有解释他的代码错在哪里。这种方法错了吗?别介意你的方法,它是做完全不同事情的正确方法(计算一个特定项目的频率)。他的方法对于他想要实现的目标是错误的,这就是需要向他解释的。感谢您的指导原则…向OP提供答案是适得其反的,尤其是没有任何解释他的代码是错误的。这种方法是错误的吗?别管您的方法,它是做完全不同的事情的正确方法(计算一个特定项目的频率)。他的方法对于他想要实现的目标来说是错误的,这就是需要向他解释的。谢谢你的指导。。。