java - 如何计算二维数组的频率

标签 java arrays

嗨,我正在尝试计算二维数组的频率。我试图以某种方式显示频率,例如如果表格如下:

0: 1 2 0

1:2 0 1

2:1 0 2

我希望能够计算频率,例如:

0: 0 2 1

1:2 0 1

2:1 1 1

所以表格的方式应该是第一列中出现了多少次 0 以及第一列中出现了 1 的次数,依此类推。

到目前为止我的代码是

    for (int t = 0; t<s;t++)
    {
        int count= 0 ; 
        for (int p = 0; p<s; p++)
        {
            if(table[p][t] ==p )
            {
                count++

            }
            else if(t+1 != s)
                continue;
            else 
                table[p][t] = count; 
                count = 0;
        }
    }

感谢您的帮助

最佳答案

对于每一列,创建 HashMap<int, int> 。键是条目,值是该列中的频率,例如对于该列:

1) 迭代该列的元素

2) 对于列的每个元素,如果它已作为键存在于 HashMap 中,则获取其值,将其加一并在同一键下添加新值。如果还没有添加,则添加值为1

创建一个 ArrayList<HashMap<int, int>>为每一列包含其中一个。

您还可以保留HashMap<int, int>计算某个元素在全局范围内出现的次数。这样,如果您想保留每个元素对每列都有计数的属性,即使该列的计数为 0,您也可以使用此全局 HashMap遍历并添加每列的 H ashMap 中的键尚不存在。

HashMap是一种数据结构,允许您将值与每个键相关联,并且与数组不同,您可以添加任意数量的条目,并且条目不必具有连续整数的键。 ArrayList就像一个数组,但您可以添加和删除它以更改其中包含的元素数量。

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

关于java - 如何计算二维数组的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15893431/

相关文章:

java - 移动数据未打开

java - 使用 Jackson 解析器将 JSON 数组转换为 HashMap<String,Object>

c++ - 基于范围的for循环的奇怪问题

arrays - 使用LINQ可以改善我的代码吗?

arrays - 如何使用指定数量的元素创建指定大小的数组的每个版本?

android - Json 数组在 Android 中解析时返回 null

java - 数组越界冒泡排序

java - 如何使用 Java 8 流按条件分隔列表

java - getenv() 不工作

c# - StreamReader 行和行分隔符