Map集合的两种遍历方式
Map集合:即 接口Map<K,V>
map集合的两种取出方式:
1.Set<k> keyset: 将map中所有的键存入到set集合(即将所有的key值存入到set中), 因为Set具备迭代器,可以进行迭代遍历。 所有可以迭代方式取出所有的链,再根据get方法。获取每一个键对应的值。
Map 集合的取出原理: 将map集合转成set集合。 再通过迭代器取出
2. set<Map.Entry<k,v>> entrySet: 将map集合中的映射关系(即键值对的方式存入到set中)存入到set集合中,而这个关系的数据类型就是:map.entry
public class Demo1_Map {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("01", "张三");
map.put("02", "李四");
map.put("03", "王二");
map.put("04", "马武");
//将Map集合中的映射关系取出。存放到set集合中.........................
Set<String> key = map.keySet();
//for遍历
System.out.println("for遍历得到数据");
for(String k:key){
System.out.println(k+map.get(k));
}
//..........................................
System.out.println("第一种方法得到数据:");
// 迭代器方法:
Iterator<String> it = key.iterator();
while(it.hasNext()){
String key2 = it.next();
String value = map.get(key2);
System.out.println(key2+value);
}
//...........................................................
System.out.println("第二种方法获取数据:");
//将Map集合中的映射键值对取出。存入到Set集合
Set<Map.Entry<String, String>> entrySet = map.entrySet();
Iterator<Map.Entry<String, String>> it2 = entrySet.iterator();
while(it2.hasNext()){
Map.Entry<String, String> me = it2.next();
String key2 = me.getKey();
String value2 = me.getValue();
System.out.println(key2+" "+value2);
}
}
}
效果:

以方法一中while为例:
while(it.hasNext()){
String key2 = it.next();
String value = map.get(key2);
System.out.println(key2+value);
//问题:当把最后一行的key2改变成it.next()时候就会出现问题,只出现两个数据??????
}
将上面的代码改成:
while(it.hasNext()){
System.out.println(it.next()+map.get(it.next()));
}
会出现错误:即效果为:

原本是想着简便写的,结果出现错误, 应该是it.next()方法出现问题; 也就是while一次循环中执行了两次it.next()方法。导致结果出现错误。
以后再写代码中,要注意一些方法多次使用会不会影响所需要的效果
Map集合的两种遍历方式的更多相关文章
- Map集合的两种取出方式
Map集合有两种取出方式, 1.keySet:将Map中的键存入Set集合,利用set的迭代器来处理所有的键 举例代码如下: import java.util.*; class Test { publ ...
- Map集合的几种遍历方式
Map<String ,String> map=new HashMap<String,String>(); map.put("1","value1 ...
- Map集合的四种遍历方式
很久以前写的代码,和上一个做比较吧!便于以后查看 import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...
- Map集合的四种遍历方式(转载)
import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMap { pu ...
- Map集合的4种遍历方式
import java.util.HashMap;import java.util.Iterator;import java.util.Map; public class TestMap { p ...
- Map的两种遍历方式
********************************************************************************* ****************** ...
- HashMap的两种遍历方式
HashMap的两种遍历方式 HashMap存储的是键值对:key-value . java将HashMap的键值对作为一个整体对象(java.util.Map.Entry)进行处理,这优化了Hash ...
- Java中List集合的三种遍历方式(全网最详)
List集合在Java日常开发中是必不可少的,只要懂得运用各种各样的方法就可以大大提高我们开发的效率,适当活用各种方法才会使我们开发事半功倍. 我总结了三种List集合的遍历方式,下面一一来介绍. 首 ...
- HashMap两种遍历方式的深入研究
转自:http://swiftlet.net/archives/1259 HashMap的遍历有两种方式,如下所示:第一种利用entrySet的方式: 1 2 3 4 5 6 7 Map map ...
随机推荐
- 使用SVN服务器管理源码
最近在学习使用SVN管理自己的项目文件,正好有好的文章就拿来标记一下,正所谓: 站在巨人的肩膀上 天下知识为我所用 转载两篇关于使用SVN管理源码的文章. 使用SVN进行源码管理(上):http: ...
- Java HashMap 源码解析
今天正式开始分析具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 签名(signature) public class HashMap<K,V> extends Abstract ...
- soliworks三维机柜布局(二)创建设备位置
首先声明对三维机柜布局来说,此步骤不是必须的.(创建solidworks装配体文件时,若是创建了位置就可以选择是否为每个位置创建一个装配体,没有创建位置的话只能选择创建整个工程的装配体文件) 在菜单栏 ...
- STL学习系列一:STL(标准模板库)理论基础
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广 ...
- hdu 2716 Message Decowding
Message Decowding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- msp430的两本书 电子版【worldsing笔记】
msp430的两本书,pdf版 MSP430系列单片机接口_技术及系统设计实例 MSP430系列16位超低功耗单片机原理与应用 点击此处下载 ourdev_528863.pdf(文件大小:4.21M) ...
- VirtualBox NAT方式与主机互相通信
之前说过,桥接方式适合在统一的网络环境中使用(一样的网关和许可). 如果网络环境发生改变,那就难堪了 -- 这就是我遇到的问题,公司里每人的IP都是固定的. 解决办法,改为NAT网络地址转换模式. 但 ...
- BootStrap导航栏的使用
默认的导航栏 创建一个默认的导航栏的步骤如下: 向 <nav> 标签添加 class .navbar..navbar-default. 向上面的元素添加 role="naviga ...
- iOS 沙盒目录结构介绍
iOS系统中,每个应用都有自己的沙盒,且应用只能访问其对应的沙盒目录下面的文件.当然,在用户授权的情况下,应用也可以访问其他目录下面的文件.比如,用户授权情况下,应用可以访问相册.通讯录.在开发中,经 ...
- Linux安装JDK详细步骤
Linux安装JDK步骤 1.先从网上下载jdk(jdk-7u1-linux-i586.rpm),下载地址:http://www.oracle.com/technetwork/java/javase/ ...