鱼C论坛

 找回密码
 立即注册
查看: 2816|回复: 4

[已解决]萌新求助 统计字符串字母出现次数

[复制链接]
发表于 2020-3-11 11:03:26 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 邑本正今 于 2020-3-11 11:33 编辑

public class TreeMapDemo {  
          public static void main(String[] args) {   
     Scanner sc = new Scanner(System.in);     
           System.out.println("请输入一个字符串:");   
           String line = sc.nextLine();   
//创建TreeMap集合,键是Character,值是Integer//           TreeMap<Character, Integer> hm = new TreeMap<Character, Integer>();     
    for (int i = 0; i < line.length(); i++) {     
             char key = line.charAt(i);       //拿得到的每一个字符作为键到TreeMap集合中去找对应的值,看其返回值//      
            Integer value = hm.get(key);      
             if (value == null) {               
                 hm.put(key,1);   
                 } else {   
       value++;      
             hm.put(key,value);
                }
            }
        }
}


问题:为什么创建好TreeMap集合后,不用先put往集合里添加元素,就可以用 得到的字符作为键在集合里找值?
小小小萌新初学java,望大佬们赐教!
最佳答案
2020-3-13 09:53:48
你创建TreeMap之后,TreeMap实际是一个空的键值对,里面没有任何的东西。当你想用任何键去查找的时候,返回的应该都是null。就好比字符串"wew"在这段程序里跑,for循环遍历到第一个字符'w'时,实际上map还是空的,直接返回null,然后经过判断语句将<'w',1>插入到这个键值对中,‘e’字母也是同理,只不过遍历到‘e’字母时,map中已经有了‘w’这个键。后面再遍历到‘w’,就更新键值对。希望我的理解能帮到你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 10:47:39 | 显示全部楼层
Integer value = hm.get(key),第一次查找没找到键对应的值的话就会返回null,然后执行hm.put(key,1),设置之前没出现过键的值为1.就好比‘B’字符没出现过, value = hm.get(‘B’)返回null,然后执行hm.put(‘B’,1),下次再有‘B’出现就再更改值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-12 18:58:34 From FishC Mobile | 显示全部楼层
Robinz 发表于 2020-3-12 10:47
Integer value = hm.get(key),第一次查找没找到键对应的值的话就会返回null,然后执行hm.put(key,1),设 ...

谢谢你的热心回答!不过我想问的是  我们输入的字符串没有添加进集合里,为什么集合里会有键和对应的值供我们用字符查找呢? 是不是说当我们第一次用取出的字符在集合里找值,字符当集合里的键,而默认将取出字符后剩余的字符串仍然放在集合里,把取出的字符 在剩余的字符串的出现次数当值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-13 09:53:48 | 显示全部楼层    本楼为最佳答案   
你创建TreeMap之后,TreeMap实际是一个空的键值对,里面没有任何的东西。当你想用任何键去查找的时候,返回的应该都是null。就好比字符串"wew"在这段程序里跑,for循环遍历到第一个字符'w'时,实际上map还是空的,直接返回null,然后经过判断语句将<'w',1>插入到这个键值对中,‘e’字母也是同理,只不过遍历到‘e’字母时,map中已经有了‘w’这个键。后面再遍历到‘w’,就更新键值对。希望我的理解能帮到你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-13 15:42:56 From FishC Mobile | 显示全部楼层
Robinz 发表于 2020-3-13 09:53
你创建TreeMap之后,TreeMap实际是一个空的键值对,里面没有任何的东西。当你想用任何键去查找的时候,返回 ...

谢谢你的热心答复!讲得很清楚,我懂了,谢谢指教!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 01:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表