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]);
}
}
总结:
- 哈希表的使用可以让不相关的两种类型的数据产生联系,也就是生成了某种对应关系,使得在得知某一类型数据的时候可以获取唯一的对应类型的数据。在今后遇到两种不同类型数据存在一一对应关系时可以使用此数据结构。
- 在本题中,I如果在V的前面是可以用减法减去I对应的值的。
- 在使用数组对比其中一个元素与后一个元素时,一定要注意下标越界的问题。
遍历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():删除迭代器刚越过的元素