java中HashMap的遍历
2015-06-22 02:09
537 查看
【遍历方法一】
[java] view
plaincopy
for(Map.Entry<key_type , value_type> entry : hashmap.entrySet()){
System.out.println("Key="+entry.getKey()+"---->value="+entry.getValue().toString())
}
for each map.entrySet()
Java
【遍历方法二:用keySet遍历】[c-sharp] view plaincopyIterator it=hashmap.keySet().iterator();//这是取得键对象
while(it.hasNext())
{
System.out.println( "it.Next数据的值是: "+get(it.next())); //获得键所对应的值。
}
for each map.keySet(),再调用get获取Java
【遍历方法三:用entrySet遍历】
[java] view
plaincopy
Iterator i = hasmap.entrySet().iterator();
while(i.hasNext()){
Entry entry=(Entry)it.next();
Object key=entry.getKey();
Object value=entry.getValue();
}
使用HashMap的匿名内部类Entry遍历比使用keySet()效率要高很多,使用forEach循环时要注意不要在循环的过程中改变键值对的任何一方的值,否则出现哈希表的值没有随着键值的改变而改变,到时候在删除的时候会出现问题。
此外,entrySet比keySet快些。对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entrySet只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
a. HashMap的循环,如果既需要key也需要value,直接用
Java
即可,foreach简洁易懂。b. 如果只是遍历key而无需value的话,可以直接用Java
// JDK1.4中
// 遍历方法一 hashmap entrySet() 遍历
System.out.println("方法一");
Iterator it = tempMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println("key=" + key + " value=" + value);
}
System.out.println("");
// JDK1.5中,应用新特性For-Each循环
// 遍历方法二
System.out.println("方法二");
for (Map.Entry<String, Integer> entry : tempMap.entrySet()) {
String key = entry.getKey().toString();
String value = entry.getValue().toString();
System.out.println("key=" + key + " value=" + value);
}
System.out.println("");
// 遍历方法三 hashmap keySet() 遍历
System.out.println("方法三");
for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);// 循环输出key
System.out.println("key=" + obj + " value=" + tempMap.get(obj));
}
for (Iterator i = tempMap.values().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);// 循环输出value
}
System.out.println("");
[java] view
plaincopy
for(Map.Entry<key_type , value_type> entry : hashmap.entrySet()){
System.out.println("Key="+entry.getKey()+"---->value="+entry.getValue().toString())
}
for each map.entrySet()
Java
12345 | Map<String, String> map = new HashMap<String, String>();for (Entry<String, String> entry : map.entrySet()) { entry.getKey(); entry.getValue();} |
while(it.hasNext())
{
System.out.println( "it.Next数据的值是: "+get(it.next())); //获得键所对应的值。
}
for each map.keySet(),再调用get获取Java
1 2 3 4 | Map<String, String> map = new HashMap<String, String>(); for (String key : map.keySet()) { map.get(key); } |
[java] view
plaincopy
Iterator i = hasmap.entrySet().iterator();
while(i.hasNext()){
Entry entry=(Entry)it.next();
Object key=entry.getKey();
Object value=entry.getValue();
}
使用HashMap的匿名内部类Entry遍历比使用keySet()效率要高很多,使用forEach循环时要注意不要在循环的过程中改变键值对的任何一方的值,否则出现哈希表的值没有随着键值的改变而改变,到时候在删除的时候会出现问题。
此外,entrySet比keySet快些。对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entrySet只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
a. HashMap的循环,如果既需要key也需要value,直接用
Java
12345 | Map<String, String> map = new HashMap<String, String>();for (Entry<String, String> entry : map.entrySet()) { entry.getKey(); entry.getValue();} |
1 2 3 4 | Map<String, String> map = new HashMap<String, String>(); for (String key : map.keySet()) { // key process } |
// 遍历方法一 hashmap entrySet() 遍历
System.out.println("方法一");
Iterator it = tempMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println("key=" + key + " value=" + value);
}
System.out.println("");
// JDK1.5中,应用新特性For-Each循环
// 遍历方法二
System.out.println("方法二");
for (Map.Entry<String, Integer> entry : tempMap.entrySet()) {
String key = entry.getKey().toString();
String value = entry.getValue().toString();
System.out.println("key=" + key + " value=" + value);
}
System.out.println("");
// 遍历方法三 hashmap keySet() 遍历
System.out.println("方法三");
for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);// 循环输出key
System.out.println("key=" + obj + " value=" + tempMap.get(obj));
}
for (Iterator i = tempMap.values().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);// 循环输出value
}
System.out.println("");
相关文章推荐
- 彻底成功配置Maven和Eclipse集成
- JAVA菜鸟入门(17) 有排序的TreeSet和无排序的HashSet, LinkedHashSet
- System.out.println()与System.out.print("\n")的区别
- java集合类介绍
- maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
- struts2框架涉及的设计模式总结
- 阅读Spring源代码(1)
- java基础—Properties集合
- java 日期 时间
- leetcode Two sum
- Palindrome Number
- Add two numbers
- Longest Substring Without Repeating Characters
- Median of Two Sorted Arrays
- zigzag Convert
- java基础—采用递归的方式来获取相关目录下的子目录的名称
- 项目搭建系列之二:SpringMVC框架下配置MyBatis
- Spring通过.properties文件引入属性配置
- SiteMesh, SpringMVC, Shiro 配置
- Struts2(七)基于XML方式进行数据输入校验