请问如何计算数组中不同元素个数?
一个数组
比如{苹果,茄子,白菜,鸭梨,茄子,橙子,鸭梨,白菜,鸭梨,茄子,白菜,苹果}
就是挑出
白菜 3 个
鸭梨 3 个
茄子 2 个
苹果 2 个
鸭梨 1 个
现在要统计,其中有哪些不同元素,不同元素的个数各是多少
这里想请教,如何做效率更高?
是不是每次都要遍历一遍数组?
个人觉得,hashmap应该不好,因为所谓的id不适合作为逐渐增长的个数统计。
这种非连续性的数组元素类型,如果先做一次排序,然后逐个遍历一次,得到结果估计会快,但是之前的排序会不会代价更高?
请各位指点,谢谢了
------解决方案--------------------
这个我不想说了,你看到这个问题就应该想到出现频率。如果不用hashmap,你可以求每个数组元素的hashcode,然后用hashcode值作为数组下标,不过这样会显得数组特别大,所以建议你用hashmap。如果你的这个数组不是汉字的话,而是0-9的数字,那么这个问题就很简单了,代码如下:
Java code
public class TestCount
{
/**
* @param args
*/
public static void main(String[] args)
{
String str = "12455547464515475354635";
int[] x = new int[10];
char[] ca = str.toCharArray();
for (int i = 0; i < ca.length; i++)
{
x[ca[i] - '0']++;
}
for (int i = 0; i < x.length; i++)
{
System.out.println("字符" + (char) ('0' + i) + "出现了" + x[i] + "次");
}
}