统计数组或者文件资源的字符串中 各个元素(字母)出现的次数的多个方法

**

1. 统计int类型的数组中个数字出现的次数


`//用新数组统计元素个数


public static void counNum(int [] arr){
int max =arr[0];
for (int y = 0 ; y < arr.length ; y ++){
if(arr[y]>max){
max = arr[y];

    }
}
//以arr数组的最大值当作elements的长度
int  [] elements = new int[max+1];//把arr数组的元素当作elements的下标,如果元素重复,则elements此下标位置的值+1
for (int i = 0; i < arr.length; i++) {
    elements[arr[i]]++;//elements[x]表示elements数组中的第x个元素的值,初始值为0,++时,此元素的值加1
}

for (int i = 0; i < elements.length; i++) {
    if(elements[i]!=0){
                    //此时的i就是arr数组的元素
        System.out.println(i+"出现了"+elements[i]+"次");
    }
}

}`

//用map统计元素个数

public static void count(int [] arr){
TreeMap<Integer ,Integer> tree = new TreeMap<>();
//遍历数组存入map中

for (int i = 0 ; i < arr.length ; i++){
    int a =arr[i];
    tree.put(a,!tree.containsKey(a)?1:tree.get(a)+1);

}
for (Integer set :tree.keySet()){
    System.out.println(set +"出现的次数为"+tree.get(set));
}

}

//没有参考别人的代码,全部是自己的思路,有点麻烦,但是能运行出来

public static void mart(int []arr){
//把数组进行排序,把相同的数字放在一起,拿后面的数字和前一个比较,相同就加1,不相同就输出个数为1;
Arrays.sort(arr);
int j = 1;
for(int i = 1 ; i < arr.length; i ++){

    if(arr[i]==arr[i-1]){
        j++;
    }else{
        System.out.println(arr[i-1]+"的个数是:"+j);
        j=1;
    }
    //如果是最后一个且与前面的数不同,说明倒数第二个已经输出过了,把最后一个输出,个数为1
    if(i==arr.length-1&&arr[arr.length-1]!=arr[arr.length-1-1]){
        System.out.println(arr[arr.length-1]+"的个数是:"+j);
        j=1;
        //如果是最后一个且与前面的相同,说明前面一个也没有输出,输出最后一个及其个数
    }else if(i == arr.length -1&&arr[arr.length-1]==arr[arr.length-1-1]){
        System.out.println(arr[arr.length-1]+"的个数是:"+j);
        j=1;
    }
}

}

2,统计字符串中元素的个数

1)数组形式存储的字符串

String [] arr = {"中国","足球","形式","姓氏","中国","姓氏"};
TreeMap<String ,Integer> tree = new TreeMap<>();
for(int i = 0 ; i < arr.length;i++){
    tree.put(arr[i],tree.containsKey(arr[i])?tree.get(arr[i])+1:1);
}
for (String s :tree.keySet()
     ) {
    System.out.println(s+"出现的次数是"+tree.get(s)+"次");
}

2),String定义的字符串

String [] arr = {"中国","足球","形式","姓氏","中国","姓氏"};
TreeMap<String ,Integer> tree = new TreeMap<>();
for(int i = 0 ; i < arr.length;i++){
    tree.put(arr[i],tree.containsKey(arr[i])?tree.get(arr[i])+1:1);
}
for (String s :tree.keySet()
     ) {
    System.out.println(s+"出现的次数是"+tree.get(s)+"次");
}

类似的题型还有很多,但是题不在多,而在于举一反三…静下来对这些代码做一个总结发现,类似的题型有一套通用的思路

  1. 把被统计的数据分解成要求统计的类型,如Int类型要求某个数字出现的次数,就分割成int小数组,即要统计啥就分割成啥类型的数组
  2. 遍历小数组,利用TreeMap把元素当作键,个数当作值来存储,
  3. 遍历TreeMap即可,利用其中的get()和keySet()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值