HashMap 源码解析(二)

  • 时间:
  • 浏览:0
  • 来源:uu快3官网pk10_uu快3官方邀请码_官网ios版

直接返回了整个node节点

hashMap遍历顺序 从nextNode()方式可不都都能能 看出,hashMap在通过上述有有一种方式遍历时,都要从table数组 从小下标到大下标,肯能处于hash冲突原困链表的,优先遍历链表,已经 hashMap的遍历和插入顺序是不同的,和hashCode()有关 ,按照插入顺序遍历hashMap可不都都能能 使用LinkedHashMap ,具体用法后边会继续写

KeySet是hashMap的内部人员类,这么 这么 写任何逻辑,咋样去遍历你你你是什么 KeySet的关键在于iterator() 不管是使用迭代器还是使用for加强循环,核心的东西都要你你你是什么 迭代器

下面继续看KeyIterator.class 是个有哪些东西

你你你是什么 方式反回了另俩个KeySet类 看看你你你是什么 KetSet是个有哪些啥

现在亲戚亲戚朋友儿来介绍 hashmap 剩下的一些方式

hashMap 一些具体情况下会进行遍历操作,hashMap 支持提供了有有一种遍历方式

1 keySet()

官方注释是@return a set view of the keys contained in this map(返回map的key set)

首先在迭代器初始化时

上篇文章介绍了hashMap 的基本数据特征和put() get() resize()流程 传送门

ok,现在迭代器初始化完成,迭代器的两大核心方式为hasNext() 判断否是处于下根小数据 和next() 获取下根小数据并将next指向下根小数据

1 hashNext(),很简单,判断next是都要为空就可不都都能能

2 values()

values().iterator() 返回了另俩个ValueIterator()

next() 方式也是调用HashIterator.nextNode()方式,只不过是去的value;

3 entrySet()

上代码

HashIterator.nextNode()方式如下,方式很短,已经 操作一些

2 next():抽象类HashIterator 这么 定义该方式,是肯能next() 有返回值,都要子类去另一方定义返回值,HashIterator 将公用操作定义为nextNode方式

KeySet的迭代器KeyIterator 定义的方式为

可不都都能能 看了 你你你是什么 迭代器继承于HashIterator ,仅重写了next() 方式,结合HashIterator代码同时分析