HashMap总结(leetcode one problem)

183 阅读2分钟

本文所有内容参考于 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

新手总结,多为提高自身,大致使用方法可以参考如下,如需深刻理解,请寻找其他相关文章

let't start

First of all 高中英语作文应该很常见ba

  • HashMap<k, v>
  • 继承了 AbstractMap<K,V>
  • 实现的接口有 Map<K,V>, Cloneable, Serializable
  • java支持单继承,多实现

what't more :D

Method Detail

  1. size()

  2. isEmpty()

  3. get(Object key)

  4. containsKey(key)
    是否存在key

  5. put(K key, V value)

  6. putAll(Map<? extends K, ? extends v>)      hashMap.putAll(newHashMap)

  7. remove(Object key)

  8. clear()

  9. containsValue(Object value)
    是否存在value

  10. keySet()
    获取返回键的集合

  11. values()
    获取返回值的集合

  12. entrySet()
    获取键值对的集合

  13. getOrDefault(Object key, V defaultValue)
    如果存在key则返回key对应的值,如果没有则直接使用V

  14. putIfAbsent(K key, V value)
    如果key不存在则直接存入key和value,如果key存在则返回对应的value

  15. remove(Object key, Object value)
    key-删除的指定键 value-预期与键绑定的值

  16. replace(K key, V oldValue, V newValue)
    key-替换的指定键 oldValue-预期与键绑定的值,newValue-替换的值 return:如果替换成功返回true

  17. replace(K key, V value)
    key-替换的指定键 value-替换的值,如果无法找到key,则不做任何操作

  18. computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
    如果key对应的value值为空或key不存在,会将第二个参数的返回值存入并返回

  19. computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
    如果key存在且不为空,计算第二个参数value;如果value有值,则保存,value为null,则会remove(key)

  20. compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
    新传入的value不为null就建立映射关系

以上三个带compute前缀方法的详细介绍请参考: https://blog.csdn.net/wsen1229/article/details/81511554
  1. merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
    如果key存在,则执行lambda表达式,表达式入参为oldVal和newVal(neVal即merge()的第二个参数)。表达式返回最终put的val。如果key不存在,则直接putnewVal。
merge和带compute前缀的比较全的解释地址: https://www.jianshu.com/p/68e6b30410b0
  1. forEach(BiConsumer<? super K,? super V> action)
1:
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
	System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
	}
2:
map.forEach((k, v) -> System.out.println("key: " + k + " value:" + v));
  1. replaceAll(BiFunction<? super K,? super V,? extends V> function)
    根据表达式更改value等hashMap.replaceAll((key, oldValue) -> oldValue * oldValue);
  2. clone() 浅拷贝

英文文档看起来着实费劲,在看方法的时候也去参考了下大神的文章,算一个好的开始吧,这篇文章也会不断充实,更新排版,尽可能做到浅显易懂,且对更多人的有帮助