嗨,我正在尝试计算二维数组的频率。我试图以某种方式显示频率,例如如果表格如下:
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/