我是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);
}
}
}
答案 0 :(得分:3)
执行此操作的一种可能方法是使用HashMap
,其中地图键是您的元素,值是元素频率:
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);
或更多Java-8方法:
Map<Integer,Long> f = Arrays.stream(a).boxed().
collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(f);
答案 1 :(得分:0)
我建议你使用基于哈希映射的实现,其中哈希映射中的键是数组元素,值是元素的频率。
迭代整个数组后,您可以获取哈希映射的密钥集并打印所有元素的频率。这种方法在时间复杂度方面更有效。
答案 2 :(得分:-1)
import java.util.Scanner;
public class Count_Occurrence
{
public static void main(String[] args)
{
int n, x, count = 0, i = 0;
Scanner s = new Scanner(System.in);
System.out.print("Enter no. of elements you want in array:");
n = s.nextInt();
int a[] = new int[n];
System.out.println("Enter all the elements:");
for(i = 0; i < n; i++)
{
a[i] = s.nextInt();
}
System.out.print("Enter the element of which you want to count number of occurrences:");
x = s.nextInt();
for(i = 0; i < n; i++)
{
if(a[i] == x)
{
count++;
}
}
System.out.println("Number of Occurrence of the Element:"+count);
}
}
该程序一次可以给出数组中一个元素的频率。
如果你能做到一个。 您可以迭代所有实例。