jdk8 集合过滤(jdk1.8中Map遍历3种方式)
jdk8 集合过滤(jdk1.8中Map遍历3种方式)Set<Map.Entry<K V>> 包装一下,就可以当Set用了。Map 、Set 都无序的,但Map是装一对数据K V 然后JDK设计者搞出了下面类型entrySet这名字看上去就是个Set-----------------源码分析------------------------jdk设计者非常的智慧,Map本来是没有iterator方法的,设计者通过一个内部类EntrySet来让Map拥有Set的能力
背景程序员实战开发中集合用的是非常非常多的,方法入参、数据转换、出参等等.
学习目标- 搞清楚Map的迭代器Iterator使用
- 搞清楚Map3种迭代方式的性能
程序员开始学习啦,数据初始化准备
Map跟Set是对兄弟,很多特性都相同,请看下面分析
entrySet迭代方式这里只举例子下面分析原理,while 或foreach只是语法变化了,本质还是通过迭代器
entrySet这名字看上去就是个Set
keySet迭代方式 values方式-----------------源码分析------------------------
jdk设计者非常的智慧,Map本来是没有iterator方法的,设计者通过一个内部类EntrySet来让Map拥有Set的能力
Map 、Set 都无序的,但Map是装一对数据K V 然后JDK设计者搞出了下面类型
Set<Map.Entry<K V>> 包装一下,就可以当Set用了。
通过继承AbstractSet然后就有了set的特性,把key、value封装到一个叫Map.Entry<K V>类中完美变身,
Entry是个内部对象
keySet思路差不多,请看我截图源码
迭代器方法都差不多,都是通过nextNode()取相应数据,注意接口Iterator<泛型类型>
Set其实可以当Map来用,请看源码
他的K就是Set的元素,V是固定的一个值Object
还有很多细节请程序员没自己看JDK,
-----------性能测试报告------------------------
1万数据 10万数据 100万数据 总结- jdk1.8放心的用entrySet吧,性能测试非常完美。
- 把Map看成特殊的Set,把Set看成特殊的Map【原因看看源码你就发现了】。
程序汪汪持续输入