Map中entry的源代码
来源:互联网 发布:淘宝做代理赚钱吗 编辑:程序博客网 时间:2024/06/13 22:29
Map中entry的源代码
很多人在编程的时候不会用到entry和entrySet,可是在面试的时候还是会遇到这个题目,这里就这个代码的源码做一探究:
引入案例Map的三种常用遍历:
import java.util.*;
/*
* map集合的遍历,分别使用for,Iterator和entry三种方式迭代,并比较相互的优劣,说出遍历原理
*/
public class Test2 {
public static void main(String[] args) {
Map<String,String> ma=new TreeMap<String,String>();
ma.put("河南","郑州");
ma.put("山东","济南");
ma.put("河北","石家庄");
ma.put("陕西","西安");
//Map接口方法 Set keySet()将Map集合中的所有键存储到Set集合
//步骤:Map集合方法KeySet(),将所有键存储到Set集合
Set<String> set=ma.keySet();
//迭代Set集合(Iterat)
Iterator it=set.iterator();
while(it.hasNext()){
//取出Set集合中的元素(就是Map中的键)
String key=(String) it.next();
//Map集合方法get,通过键获取值
String value=ma.get(key);
System.out.println(key+"--------"+value);
}
//增强for遍历集合
for(String key:set){
//得到key然后再通过key调用方法得到value
String value=ma.get(key);
System.out.println(key+"---"+value);
}
//entrySet方式 Map接口方法entrySet()将Map集合中的键值对的映射关系对象存储到Set集合
//映射关系:Map接口中的内部接口Entry Map。Entry(描述键值对映射关系)返回Set<Map<键,值>>
//Map集合方法entrySet()将键值对映射关系对象Map。Entry,存到Set集合
Set<Map.Entry<String, String>> set1=ma.entrySet();
//迭代Set集合(Iterator)
Iterator<Map.Entry<String, String>>ite=set1.iterator();
//获取出Set集合中的元素
while(ite.hasNext()){
//迭代出来的是什么,是键值对应关系对象Map。Entry
//使用键值对映射关系对象Map.Entry接口方法,getKey getValue获取键值对
Map.Entry<String, String> entry=ite.next();
System.out.println(entry.getKey()+"-------"+entry.getValue());
}
}
}
keySet和使用增强for方法遍历集合还是比较容易的, entry看似也不难,那么entry究竟有什么需要深究呢?
先在这里提出几个问题?
entry是个方法,返回值是个Set类型的接口,案例中的
Set<Map.Entry<String,String>> set1=ma.entrySet()从概念上理解是不是
接口<接口<数据类型>>=对象.调用方法
那么问题来了,接口实现不是需要实现类吗?为什么这里确实一个方法呢?或者返回了一个接口呢?
带着这一系列疑问,我们来看下源码,首先看entrySet的源码
Set<Map.Entry<K, V>> entrySet(); 存在于Map接口中
那么谁实现了这个抽象方法呢?java.util 类HashMap<K,V>实现了Map接口,并重写了entrySet方法,源码如下:
publicSet<Map.Entry<K,V>>entrySet() {
return entrySet0();
}
private Set<Map.Entry<K,V>> entrySet0() {
Set<Map.Entry<K,V>> es = entrySet;
return es !=null ? es : (entrySet =new EntrySet());
}
返回一个entry、另外Map.Entry这个的理解是Entry是Map的一个内部类
- Map中entry的源代码
- Map中Entry的作用
- JAVA中接口 Map.Entry的使用
- JAVA中接口 Map.Entry的使用
- Map.Entry的好处
- map.entry的介绍
- map.entry 的作用
- 【Map】Map.Entry的使用
- java中entry遍历map
- java中Map及Map.Entry详解
- java中另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- Map.Entry的相关运用
- Map.Entry的用法实战
- Map.Entry和Map.entrySet的用法
- Map 和Map.Entry的学习
- Map与Map.Entry的关系
- 关于Map集合的Map.Entry
- java的Map和Map.Entry
- HDU 5146 Sequence
- 【Ruby】语法记录一
- mysql下载安装配置
- 10009---AngularJS Http
- 阿里的分布式数据库DRDS
- Map中entry的源代码
- Android学习笔记(3):Android项目结构分析
- 【ZYNQ-7000开发之三】ZYNQ平台的HDMI驱动测试
- 第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程
- 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述
- Evaluate Reverse Polish Notation
- Android学习笔记(4):资源字典R.java
- 第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化
- (八十二)if语句