- 博客(17)
- 收藏
- 关注
原创 HashMap (jdk1.8)HashIterator抽象类注释
抽象类HashIterator,HashMap中的迭代器,都来自于HashIterator迭代器abstract class HashIterator { Node<K,V> next; // next entry to return,下一个节点 Node<K,V> current; // current entry 当前节点 int expectedModCount; // for fast-fail .
2021-08-11 17:52:07
294
原创 HashMap (jdk1.8) forEach()、replaceAll()、 clone()、capacity()方法注释
这几个方法都比较简单,具体功能见方法中的注释1.forEach() /* * 遍历hashMap执行自定义函数action的功能 * */ @Override public void forEach(BiConsumer<? super K, ? super V> action) { HashMap.Node<K,V>[] tab;//定义Node类型的数组tab,存放hashMap中的元素; if (actio
2021-08-03 15:40:27
334
原创 HashMap (jdk1.8)compute()方法注释
computeIfAbsent 是实现Map接口中的方法,功能如:/* * compute功能:给定的key在hashMap中存在时,如果remappingFunction的apply()执行结果为null, * 则删除节点,不为null,则用apply()执行结果的值替换当前key的value; * 如果给定的key在hashMap中不存在时,如果remappingFunction的apply()执行结果为null,直接return v,此时v=null; * 如果r...
2021-08-02 11:47:28
329
原创 HashMap (jdk1.8)computeIfPresent()方法注释
computeIfAbsent 是实现Map接口中的方法,功能如:/* * computeIfPresent功能:给定的key在hashMap中存在时,执行BiFunction函数的apply()方法 * 如果apply()返回值为null,则删除hashMap中的key节点,如果apply()返回值不为空, * 用apply()执行结果的值替换key原有的value; * 给定的key在hashMap中不存在时,直接返回null; * */@Overrid...
2021-08-02 11:45:20
309
原创 HashMap (jdk1.8)computeIfAbsent()方法注释
computeIfAbsent 是实现Map接口中的方法,功能介绍如:/* * 功能:判断给定的key在hashMap中是否存在,如果key已经存在,则返回key对应的value * 如果key不存在,则新生成一个节点(hash,key,value,null),value的值是通过 * V v = mappingFunction.apply(key);获取的,重点是要搞明白mappingFunction.apply(key)这个方法。 * */@Overrid...
2021-07-28 18:50:58
368
原创 HashMap (jdk1.8) getOrDefault()、 putIfAbsent()、replace()方法注释
1.getOrDefault(Object key, V defaultValue)/* * 如果hashMap中存在给定的key,就用这个key对应的value,否则用默认的value值:defaultValue * */ @Override public V getOrDefault(Object key, V defaultValue) { Node<K,V> e; //定义node类型节点e return (e = g
2021-07-22 16:36:08
221
原创 HashMap (jdk1.8) values()、entrySet()方法及Values、EntrySet内部类注释
1. values()涉及到Values内部类,entrySet()涉及到EntrySet内部类。 /* * 返回hashMap中value值组成的集合 * */ public Collection<V> values() { Collection<V> vs = values; //定义Collection 对象vs,把hashMap父类AbstractMap的成员变量values赋值给vs if (vs == null)
2021-07-20 17:53:58
597
原创 HashMap (jdk1.8) merge(K key, V value, BiFunction<? super V, ? super V, ? )方法详细注释
merge()方法比compute()多传入一个value参数,根据value参数判断是否新建节点。merge()方法功能:如果key存在的情况下: value不为空,remappingFunction的apply()执行结果不为空,替换value为apply()执行结果的值; value不为空,remappingFunction的apply()执行结果为空,删除key节点; value为空:抛出java.lang.NullPointerException异常 old..
2021-07-16 15:48:13
410
原创 HashMap (jdk1.8) keySet()方法详细注释
hashMap通过keyset遍历时,先调用keySet()方法,该方法返回hashMap中存储的key的集合ks,然后再执行内部类 final class KeySet 中的iterator(),iterator()返回一个HashMap.KeyIterator()对象。KeyIterator对象继承HashIterator且实现 Iterator<K>HashIterator的构造方法初始化时会把table中存储的元素赋值给临时node类型变量t,并通过循环do {} while.
2021-07-15 17:18:20
629
原创 HashMap (jdk1.8) clear()、containsValue(Object key)方法详细注释
clear() /* * 清空hashMap * */ public void clear() { HashMap.Node<K,V>[] tab; //定义node类型的数组tab modCount++; //记录hashMap被修改的次数 if ((tab = table) != null && size > 0) { //把hashMap的成员变量table赋值给tab,tab不为空,h
2021-07-15 16:50:47
147
原创 HashMap (jdk1.8) remove(Object key)方法详细注释
remove(Object key)功能:删除指定的key对应的元素。/* * 删除节点 * Object key:需要删除的key * */ public V remove(Object key) { HashMap.Node<K,V> e; //定义Node类型的节点e /* * 调用removeNode(hash(key), key, null, false, true),把执行结果赋值给e,如果e为
2021-07-13 17:56:08
531
原创 HashMap (jdk1.8) get(Object key()方法详细注释
get(Object key)功能:根据给定的key查找hashMap中时候有相同的key,如果有相同的key,返会该key对应的value,如果没找到,返回null.get(Object key)中调用了 getNode(int hash, Object key),所作get()方法的重点在getNode方法上。直接上代码+注释 public V get(Object key) { Node<K,V> e; //定义一个node节点 re
2021-07-09 14:33:38
412
原创 JDK1.8中构造出走红黑树分支的hashMap,可debug --->putTreeVal()方法,和Red Black Tree相关的方法都能debug一遍
花了一天时间终于构造出了能debug红黑树分支的hashMap,要点:1.这个hashMap里面value为105的key是必须的,主要是这些key会存储带红黑树的位置,其他的key可以随设置。2.hashMap扩容后n=128,存储大于64个元素即可。下面分别通过key-value、map、json格式提供这个特殊的hashMap:分3中方式展示下:1.key--value,以逗号分隔;你们,43foes,86强者,42灵上人,68怕死,37种到,34家我,58
2021-07-08 17:19:27
160
原创 HashMap (jdk1.8)put()方法详细注释
HashMap1.8中的put方法直接调用 putVal()方法,所以本文主要注释了 putVal()方法里面的代码。public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { .
2021-07-06 15:21:13
243
原创 HashMap (jdk1.8)resize()方法详细注释
//hashMap初始化兼扩容 final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; //创建node数组oldTab,并将hashMap的成员数组table 赋值给oldTab; int oldCap = (oldTab == null) ? 0 : oldTab.length; //获取oldTab数组的长度,如果直接int oldCap = oldTab.length,当t...
2021-07-05 16:57:49
231
原创 Java中异常处理方法总结
Java中常用的异常处理有3中方式:1.try {} catche{}try...catch 适合处理程序员可以控制和用户输入有误的情况,把认为可能会出现异常的代码放到try后面的{},异常后执行的代码放到catche的{}里面,catche的{}后面的语句正常执行。try的{}中异常后面的语句停止执行。2.thows exception{}用throws处理异常:处理方法是将
2017-12-06 17:30:31
748
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人