Hashtable集合 --练习题_计算一个字符串中每个字符出现次数
Hashtable集合
java.util.Hashtable<K,V>集合 implements Map<K,V>接口
Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快
HashMap集合(之前学的所有的集合):可以存储null值,null键
Hashtable集合,不能存储null值,null键
Hashtable和Vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap,ArrayList)取代了
Hashtable的子类Properties依然活跃在历史舞台
Properties集合是一个唯一和IO流相结合的集合
例:
public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put(null,"a"); map.put("b",null); map.put(null,null); System.out.println(map); Hashtable<String,String> table = new Hashtable<>(); // table.put(null,"a"); // table.put("b",null); table.put(null,null); }
计算一个字符串中每个字符出现次数
需求: 计算一个字符串中每个字符出现次数。
分析:
1. 获取一个字符串对象
2. 创建一个Map集合,键代表字符,值代表次数
3. 遍历字符串得到每个字符
4. 判断Map中是否有该键
5. 如果没有,第一次出现,存储次数为1;
如果有,则说明已经出现过,获取到对应的值进行++,再次存储
6. 打印最终结果
演示代码:
public static void main(String[] args) { //创建一个空集合,用于存放英文字母出现的次数 HashMap<Character,Integer> map = new HashMap<Character, Integer>(); //友情提示 System.out.println("请随机输入一串英文字母:"); //设置键盘输入 String scanner = new Scanner(System.in).nextLine(); //遍历输入的内容 for (int i = 0; i < scanner.length(); i++) { //读取字符 char c = scanner.charAt(i); if (!map.containsKey(c)){//说明不存在这个字符 map.put(c,1); } else { //先获取之前的次数 Integer count = map.get(c); //存入 map.put(c,++count); } } System.out.println(map); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)