Map对象的迭代学习
来源:互联网 发布:淘宝详情页设计价格 编辑:程序博客网 时间:2024/04/30 18:03
引用Java SE API中的解释
Interface Map<key,value>:An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value.
1.输出全部的key
Map类中有keySet()方法可以把该Map中的所有key值放到一个Set中,通过Set的Iterator迭代方法,取出所有的Key值。
2.输出全部的value
Map类中有valuese()方法可以把该Map中的value值放到一个Collection中,通过Iterator迭代方法,取出所有的value值。
3.输出全部的key-value对值
对于Map接口来说,其本身是不能直接使用迭代(如Iterator、foreach)进行输出的,因为Map中的每个位置存放的是一对值(key→value),而Iterator中每次只能找到一个值。所以,如果非要使用迭代进行输出,则必须按照以下步骤完成(以Iterator输出方法为例):
- 将Map的实例通过entrySet()方法变为Set接口对象。
- 通过Set接口实例为Iterator实例化。
- 通过Iterator迭代输出,每个内容都是Map.Entry的对象。
- 通过Map.Entry进行key→value的分离
- Map中的每对数据都是通过Map.Entry保存的,最终要进行输出也应该使用Map.Entry完成。
例子:
package com.szu.edu.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest2 {
/**
* @Test Map()用法
* 作者:zhouhong
* 时间:2012.09.01
*/
// public static void work(Map<String, Student> map){
// Collection<Student> c = map.values();
// Iterator it = c.iterator();
// for(; it.hasNext();){
// System.out.println(it.next());
// }
// }
public static void main(String[] args) {
// TODO Auto-generated method stub
// 方法一:通过Set的Iterator迭代方法,取出所有的Key值
System.out.println("方法一: 输出全部的key对值:");
Map<String, String> map = new HashMap<String, String>();
map.put("id1", "wang");
map.put("id2", "li");
map.put("id3", "chen");
map.put("id4", "zhao");
// map.put("id4", "zhao");
map.put(null, null);//HashMap()中可以持有:null->null键值对
Set<String> set = map.keySet();
for (String s : set) {
System.out.println(s + " " );
// System.out.println(s + "," + map.get(s));// map.get()返回指定键所映射的值
}
//方法二:输出全部的value,通过Map类中的values()方法可以把该Map中的value值放到
//一个Collection中,通过Iterator迭代方法,取出所有的value值
System.out.println("方法二: 输出全部的value对值:");
Collection<String> values = map.values();
for(String v : values){
System.out.println(v + " " );
}
//方法三: 输出全部的key-value对值
System.out.println("方法三: 输出全部的key-value对值:");
Set<Map.Entry<String, String>> kv = map.entrySet();
Iterator<Map.Entry<String, String>> iter = kv.iterator();
while(iter.hasNext()){
Map.Entry<String, String> me = iter.next();
System.out.println(me.getKey() + " --> " + me.getValue());
}
}
}
运行结果:
方法一: 输出全部的key对值:
null
id2
id1
id4
id3
方法二: 输出全部的value对值:
null
li
wang
zhao
chen
方法三: 输出全部的key-value对值:
null --> null
id2 --> li
id1 --> wang
id4 --> zhao
id3 --> chen
- Map对象的迭代学习
- map的迭代
- Map的迭代
- Map的迭代
- Map的迭代
- 用JSTL的forEach标签迭代Map对象
- JSTL--foreach 迭代Map对象
- JAVA8学习(一)List、Map的循环迭代
- MAP类的迭代
- Java Map 的迭代
- Map的迭代方式
- C++10.3.8 map对象的迭代遍历---begin 和end
- java Map 迭代的用法
- Map的迭代方式小结
- Map的迭代简单写法
- php对象的迭代
- 迭代Map
- Map迭代
- 妙龄女子被合租男子杀害分尸
- 一步步将vim改造成C/C++开发环境(IDE)
- 堆排序算法实现
- 基于AT91SAM9G45的上手之SAM9G45器件DDR2硬件考虑
- 搭建Android源码编译环境
- Map对象的迭代学习
- IplImage, CvMat, Mat 的关系和相互转换
- 安装clojure编译工具leiningen
- Ajax文件上传
- 父母报警告发儿子勒死女友
- 搭建Android源码编译环境
- String的定义不同导致的不一致
- 屏幕适配
- 第七十三回 玄德进位汉中王 云长攻拔襄阳郡