繁体   English   中英

计算数组java中的出现次数

[英]Counting occurrences in array java

我想计算 Java 数组中每个数字的出现次数(如 1=?, 2=?, 3=?)。 我的数组如何存储超过 10 个值?

int [] arryNum = new int[]{4,4,4,3,4,5,4,3,4,4,4,5,4,5,5,5,4,3,2,15,4,3,4,6,4,3,4,5,4,2,4,5,4,3,2,5,4,3,5,4,0,4,3,4,5,4,3,0,4,5,4,3,5,4,2,3,2,3,4};
     int[] counter = new int[] { 0, 0, 0, 0, 0,0 };
    for (int i = 0; i < arryNum.length; i++) {
        counter[arryNum[i] ]++;
    }

    for (int i = 0; i < counter.length; i++){
        System.out.println((i + 1) + ":" + counter[i]);
    }

您可以使用 java 8 流以更简洁的方式编写它:

Map<Integer,Integer> map = new HashMap<Integer,Integer>();
Arrays.stream(arryNum).forEach(x -> map.put(x , map.computeIfAbsent(x, s -> 0) + 1));
System.out.println(map);
public static void main(String[] args){
    int[] arryNum = new int[] { 4, 4, 4, 3, 4, 5, 4, 3, 4, 4, 4, 5, 4, 5, 5, 5, 4, 3, 2, 15, 4,
            3, 4, 6, 4, 3, 4, 5, 4, 2, 4, 5, 4, 3, 2, 5, 4, 3, 5, 4, 0, 4, 3, 4, 5, 4, 3, 0, 4,
            5, 4, 3, 5, 4, 2, 3, 2, 3, 4 };
    Map<Integer, Integer> lookup = new HashMap<>();
    for (int key : arryNum) {
        if(lookup.containsKey(key)) {
            lookup.put(key, lookup.get(key) + 1);
        } else {
            lookup.put(key, 1);
        }
    }

    for (Integer keys : lookup.keySet()) {
        System.out.println(keys + " Found " + lookup.get(keys) + " Times");
    }

}

你可以这样做。

首先,您需要该地图来计算您的物品:

Map<Integer, Integer> countsByNumbers = new HashMap<>();

然后你迭代你的数字; 最好使用 for-each:

for (int number : arryNum) {
  if (countsByNumbers.containsKey(number)) {
    int newCount = countsByNumbers.get(number) +1;
    countsByNumbers.put(number, newCount);
  } else {
    countsByNumbers.put(number, 1);
  }

一些注意事项:

  1. 请注意 Maps,因为任何类型的 Java Collection 类都只处理引用类型; 因此它被声明为使用 Integer,而不是原始类型int
  2. 编译器做了一些魔术,将数组中的int值转换为掩饰下的Integer对象
  3. 注意Map是一个接口,但是我们必须实例化一个具体的类,在这种情况下我们只需使用HashMap

考虑到数组包含 String 值,将 String 放入 HashMap。 在插入每个字符串之前,检查映射中是否已经存在它的键如果是 - 取该键的默认值 1,并将其增加 1 并再次插入。 如果没有 - 只需添加具有默认值 1 的新键最终映射将给出“字符串”:字符串的出现次数。

public Map<String, Integer> wordCount(String[] strings) {
  Map<String, Integer> map = new HashMap();
  for(String s : strings){
    if(map.containsKey(s)){
      map.put(s, map.get(s)+1);
    }
    else
    map.put(s, 1);
  }
  return map;
}

包 com.report.automation;

导入 java.util.HashMap; 导入 java.util.Map;

公共类频率 { public static void main(String[] args){

    String value[] = {"Mukesh","Mukesh","Sasi","Senthil","Mukesh","Mukesh"};
    String match = "Mukesh";
     int count = 0;
    for (int j = 0; j <= 5; j++) {
    if (match.equals(value[j])) {       
       
        count++;                
        
    }       
    }
    System.out.println(count);
    
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM