java - 计算一个数组中的整数并将计数存储在另一个数组中

标签 java arrays

我正在尝试计算一个数组的整数并将这些整数的计数存储在另一个数组中。

代码计算一个整数的出现次数,但继续计算其余不同整数,而不停止计数。该代码仅存储第一个整数出现的计数,没有问题。

我的问题是,当循环到达下一个整数时,计数不会重置,并继续从最后一个整数计数开始计数并显示该值。

如何改进我的代码以查找每个整数出现的整数?

public count() {
    int k[] = {1,1,2,2};
    int t[] = {0,0,0,0,0};
    int count = 0;
    System.out.println("reset count: "+count);

    for (int f = 0; f<k.length; f++) {
        for (int i =1; i < k.length-1; i++) {
            for (int g = 0; g < t.length; g++ ) {
                if (k[f] == i) {
                    count++;
                    System.out.println("Integer = "+i);
                    System.out.println("count: "+count);
                    t[g] = count;
                }
                i++;
            }
        }
    }
    System.out.println();
    for (int o = 0; o < t.length; o++) {
        System.out.println("Stored int counts t" + o + " = " + t[o]);
    }
}

最佳答案

如果您知道 k 中最大的可能元素是什么(假设 100),那么您可以线性求解它:

int[] t = new int[101]; //subject of change
for (int i : k) {
   t[i]++;
}

在这里,当 k 中当前处理的元素值为:

否则,如果您不知道 k 的最大可能元素(并且相应地,您也不知道如何初始化 t 数组),您可以使用 map :

Map<Integer, Integer> map = new TreeMap<>();
for (int i : k) {
   if (map.containsKey(i)) {
      int value = map.get(i);
      map.put(i, ++value);
   } else {
      map.put(i, 1);
   }
}

for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
    int i = entry.getKey();
    int n = entry.getValue();
    System.out.println("The number " + i + " was found " + n + " times.");
}

关于java - 计算一个数组中的整数并将计数存储在另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124776/

相关文章:

java - Log4j2 RollingFile 不工作

python - 将元组的字符串转换为元组

javascript获取子数组长度

c - 字符数组到链表 - 使用数组中的地址

javascript - 在javascript中用2个div包裹每第n block 内容

java - 用 Hashmap<String, List<String>> 比较两个字符串

java - Java 语言规范有手机版吗?

javascript - Selenium:在动态加载网页时滚动到页面末尾

java - 隐藏查询字符串以在 URL : URL Rewriting 中显示

c++ - 二维字符数组 C++