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

    技术2022-08-16  89

    练习:计算一个字符串中每个字符出现的次数,使用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也避免了空针。 可能老师认为的难度是空针的处理以及数据的遍历,本人确实比较笨,一开始想的太简单,花了很多时间。

    Processed: 0.011, SQL: 9