java中哈希表的使用第二例—即将罗马数字转换为整数

代码:
class Solution {
public int romanToInt(String s) {
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
map.put(‘I’,1);
map.put(‘V’,5);
map.put(‘X’,10);
map.put(‘L’,50);
map.put(‘C’,100);
map.put(‘D’,500);
map.put(‘M’,1000);

    int result = 0;char[] myArray = s.toCharArray();for(int i=0;i<myArray.length-1;i++){if(i<myArray.length-1){if( map.get(myArray[i])<map.get(myArray[i+1])){result -= map.get(myArray[i]);}else{result += map.get(myArray[i]);}}}return result+map.get(myArray[myArray.length-1]);}

}
总结:

  1. 哈希表的使用可以让不相关的两种类型的数据产生联系,也就是生成了某种对应关系,使得在得知某一类型数据的时候可以获取唯一的对应类型的数据。在今后遇到两种不同类型数据存在一一对应关系时可以使用此数据结构。
  2. 在本题中,I如果在V的前面是可以用减法减去I对应的值的。
  3. 在使用数组对比其中一个元素与后一个元素时,一定要注意下标越界的问题。

遍历map集合的方法

1.使用entries实现

Map<Integer,Integer> map = new HashMap<>();
map.put(1,2);
map.put(2,1);
for(Map.Entry<Integer,Integer> entry : map.entrySet()){int mapKey = entry.getKey();int mapValue = entry.getValue();System.out.println(mapKey+":"+mapValue);
}
Map<Integer,Integer> map = new HashMap<>();
map.put(1,2);
map.put(2,1);
//获取value
for(int value : map.values()){System.out.println(value);
}
//获取key
for(int key : map.keySet){System.out.println(key);
}

3.使用Iterator迭代器


Map<Integer, Integer> map = new HashMap<Integer, Integer>();Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry<Integer, Integer> entry = entries.next();System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

迭代器的使用:
Object next():返回迭代器刚越过的元素的引用,返回值是Object,需要强制转换成自己需要的类型
boolean hasNext():判断容器内是否还有可供访问的元素
void remove():删除迭代器刚越过的元素

JAVA中哈希表的使用-遍历map集合相关推荐

  1. 在java中哈希表判断某个元素是否存在的原理

    在java中哈希表判断某个元素是否存在的原理 在本文中我们将介绍,在hash表中如何判断两个元素是否重复. 首先,我们们需要知么hash表是什么? Hash表由称为离散表,是由数组加链表实现的一种数据 ...

  2. java中哈希表HashMap详解遍历操作

    一.主题外谈 在进入主题之前,先讲一点与哈希表相关的一些东西: 1.Hash算法, 通常还可用作快速查找. 2.哈希函数,是支撑哈希表的一类「函数」. 3.哈希表(Hash Table),是一种**「 ...

  3. java中哈希表怎么表示_java中HashMap概念是什么?怎么存取实现它?

    时代总是在不断的变化发展的,高新技术的应用也越来越普遍,大家对于新知识的渴望越来越强烈.java中很多的基础知识都是非常重要的.一起来看看关于HashMap的知识吧. 一. HashMap概述: Ha ...

  4. 在java中 哈希表会经常出现哈希碰撞吗

    在Java中,哈希表可能会经常出现哈希碰撞.哈希表是一种根据键(Key)来访问值(Value)的数据结构,通过哈希函数将键映射到哈希表的索引位置上.由于哈希函数的映射结果可能不唯一,不同的键可能会被映 ...

  5. LeetCode笔记】剑指 Offer 35. 复杂链表的复制(Java、哈希表、原地算法)

    文章目录 题目描述 思路 && 代码 1. 哈希表法 2. 原地算法 二刷 题目描述 主要有两个考虑点: 不能改变原链表 新链表赋予 next.random 时,复制结点不一定存在 思 ...

  6. c ++中哈希表如何访问_C / C ++中的哈希表–完整的实现

    c ++中哈希表如何访问 A Hash Table in C/C++ (Associative array) is a data structure that maps keys to values. ...

  7. Java中遍历Map集合的5种方式总结

    这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 方式一 通过Map.keySet使用iterator遍历 ...

  8. java中如何高效遍历Map集合

    1. 前言 [推荐]使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历. 说明:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key ...

  9. Java中分库分表再相约

    分库分表越来越影响系统应用的高可用.高并发问题,下面和分库分表再相约,聊聊mysql环境的分库分表. what:什么是分库分表 why:为什么需要分库分表 how:如何进行分库分表 when/wher ...

最新文章

  1. 不借助第三方 Windows 7搞定无法删除文件
  2. LeetCode Nim Game
  3. 多维多重背包问题_满满干货!背包问题全总结(带c++源码)
  4. 第十节课-RNN介绍
  5. Redis【3】其他部分~
  6. SAP销售订单-订单组合
  7. STM32开发 -- Gerrit的详细使用
  8. dtm文件生成等高线 lisp_DEM、DSM和DTM的区别
  9. PHP代码审计基础手册
  10. 机器学习问题总结(05)
  11. var obj = eval(result); 解析json
  12. Load Balance System
  13. 后台管理系统 – 权限管理
  14. 传说中的世界500强面试题-反应能力
  15. html怎么设置文字竖排,CSS文字竖排
  16. C语言:输入日期,计算该日期是该年的第几天。
  17. ADO 在C/C++中的基本使用
  18. whois域名查询工具在线使用
  19. 计算机技术比武通讯报道,第十六届后勤优质服务月:各部门积极开展技能比武,强化岗位技能,提升服务水平...
  20. python中geometry用法_pythongdal教程之:几何形状geometry与投影projection

热门文章

  1. Windows10恢复任务栏中的“中/英”切换图标
  2. java.lang.ClassCastException: org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory cannot b
  3. 计算机学生英语面试自我介绍ppt,面试英语自我介绍.ppt
  4. 平板电脑进化论:从玩具到工具
  5. VC2010使用过程常见问题
  6. etcd v3的webui管理界面
  7. 国培计算机培训返岗总结,国培计划返岗实践总结
  8. 计算机辅助制造应用心得体会,学习课件制作的心得体会(精选10篇)
  9. 阿里虾米音乐:虾米SRE团队的运维监控体系建设实践!
  10. selenium Edge浏览器规避检测