一个集合类的小练习(Map类)

练习:计算一个字符串中每个字符出现的次数,使用Map

今天老师布置了一个小作业,老师说有点点难度,起初抱着钻研的心态试试,花了十几分钟写出来并优化了一下

package Work2;

import java.util.*;

public class homework2 {
//    练习:计算一个字符串中每个字符出现的次数,使用Map
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String string;
        System.out.println("请输入字符串");
        string=scanner.next();//获取输入的字符串
        test1(string);//调用方法
    }
    private static void test1(String string) {
        Map<String,Integer> map=new HashMap<>();//new hashMap
        for (int i = 0; i < string.length(); i++) {//遍历string字符串
            String s=string.substring(i,i+1);//获取每个字符
            if(map.get(s)==null){//如果获取的字符是第一次进map就创建键值对
                map.put(s,1);
            }else{
                map.put(s,map.get(s)+1);//
            }
        }
        Set<String> keys=map.keySet();
        for (String key:keys) {
            System.out.println(key+":"+map.get(key));
        }

}
}

总之还是比较容易,绕了几个小弯,遇到几个问题总结一下
起初想用数组来控制键值对的数据增减,但是无法定i值,放弃数组
然后想用count变量控制键值对的数据增减,但也不好控制count值的增减
再然后想起了Map的方法,但是Map写入第一个键值对数据时会返回空针,起初想的是用一个变量和if判断进行赋值,是空针就直接赋1,不是空针就+1。最后直接把变量赋值改到put方法里去,用if也避免了空针。
可能老师认为的难度是空针的处理以及数据的遍历,本人确实比较笨,一开始想的太简单,花了很多时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值