首页
学习
活动
专区
工具
TVP
发布

一个会写诗的程序员的博客

专栏作者
1222
文章
2322356
阅读量
95
订阅数
Java 8 中的 java.util.Map#computeIfAbsent
Java8之后,上面的操作可以简化为一行,若key对应的value为空,会将第二个参数的返回值存入并返回。
一个会写诗的程序员
2021-03-18
6820
这21个刁钻的HashMap面试题,我把阿里面试官吊打了
A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。
一个会写诗的程序员
2020-05-18
2.2K0
最通俗易懂的HashMap底层原理图文详解
HashMap里面涉及了很多的知识点,可以比较全面考察面试者的基本功,想要拿到一个好offer,这是一个迈不过的坎,接下来我们用最通俗易懂的语言带着大家揭开HashMap的神秘面纱。
一个会写诗的程序员
2020-05-18
6420
字节跳动面试题
字节跳动面试题 历经4面,“跳进”字节跳动 字节跳动一面: 自我介绍 tcp和udp区别,应用场景 tcp三次握手,为什么有第三次? 讲一下get和post区别,其他命令 讲一下进程和线程区别,什么时候用多线程?怎么保证线程安全? synchronized的使用,是对什么加锁? 栈和队列,怎么用栈实现队列? 垃圾回收算法,复制算法中存活对象太多怎么办? 可达性分析,GC Root可以是哪些对象? hashmap底层实现,put get过程,扩容,为什么容量为2的倍数? java基本类型,基本类型间的转换(s
一个会写诗的程序员
2020-05-18
1.3K0
Java 8中的Lambda 和 Stream (from Effective Java 第三版)
  在之前的做法中(Historically),使用单个抽象方法的接口(或很少的抽象类【只有一个抽象方法的抽象类数量比较少】)被用作函数类型。它们的实例称为函数对象,代表一个函数或一种行为。自 JDK 1.1 于 1997 年发布以来,创建函数对象的主要方法是匿名类(第 24 项)。下面的这个代码片段,用于按长度顺序对字符串列表进行排序,使用匿名类创建排序的比较函数(强制排序顺序):
一个会写诗的程序员
2020-05-08
2.3K0
Java HashSet 的实现源码解析
它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。类图结构如下:
一个会写诗的程序员
2020-04-30
5320
Java 实现给定一个数, 获取大于这个数并且最小的2 的幂次方的数
来自 HashMap 的内部静态方法实现: /** * Returns a power of two size for the given target capacity. */ static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >
一个会写诗的程序员
2020-03-26
9320
[Java 8 HashMap 详解系列]6.HashMap 的扩容 resize() 原理
作者:一个会写诗的程序员 链接:https://www.jianshu.com/p/0731384a6155 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一个会写诗的程序员
2020-03-24
8500
[Java 8 HashMap 详解系列]5.HashMap 的 remove() 方法执行原理
根据对冲突的处理方式不同,哈希表有两种实现方式,一种开放地址方式(Open addressing),另一种是冲突链表方式(Separate chaining with linked lists)。Java HashMap采用的是冲突链表方式。
一个会写诗的程序员
2020-03-24
9590
[Java 8 HashMap 详解系列]4.HashMap 的 get() 方法执行原理
https://blog.csdn.net/xiangwanpeng/article/details/54946015
一个会写诗的程序员
2020-03-24
4640
[Java 8 HashMap 详解系列]3.HashMap 的 put() 方法执行原理
HashMap类中有一个非常重要的字段,就是Node[] table,即哈希桶数组:
一个会写诗的程序员
2020-03-24
6090
[Java 8 HashMap 详解系列] 2.HashMap 中 Key 的 index 是怎样计算的?
对于HashMap内的所有实现来说,首先第一步是定位对键值对所在数组的索引下标位置,这是后续所有操作的基础.
一个会写诗的程序员
2020-03-24
1K0
[Java 8 HashMap 详解系列] 1.HashMap 的存储数据结构
从底层数据结构来说,HashMap是通过数组+链表+红黑树来进行数据存储的,数组是为了通过通过下标直接定位到数据,链表和红黑树都是为了解决冲突而引入的,红黑树是为了解决在冲突比较严重时,链表过长而导致查询效率降低,从面通过红黑树来提升查询效率。HashMap底层基本的存储结构如下图所示:
一个会写诗的程序员
2020-03-24
8520
深入理解 HashMap 的扩容机制:resize 过程详解
在put()方法中有调用addEntry()方法,这个方法里面是具体的存值,在存值之前还有判断是否需要扩容
一个会写诗的程序员
2020-03-24
1.1K0
Java 中的 LinkedHashMap 和 HashMap 有什么关系?
HashMap,LinkedHashMap,TreeMap都属于Map; Map 主要用于存储键(key)值(value)对:
一个会写诗的程序员
2020-03-20
9240
JDK 1.8 的 HashMap 详解: 为什么并发会出问题?甚至出现死循环导致系统不可用?
为什么说HashMap是非线程安全的呢?因为在高并发情况下,HashMap在一些操作上会存在问题,如死循环问题,导致CPU使用率较高。
一个会写诗的程序员
2020-02-25
3.6K0
计算机程序设计哲学
计算机程序设计哲学 计算机抽象模型 图灵机(Turing machine) 一台图灵机是一个七元组,M = {Q,Σ,Γ,δ,q0,qaccept,qreject},其中 Q,Σ,Γ 都是有限集合,且满足: 1、Q 是状态集合; 2、Σ 是输入字母表,其中不包含特殊的空白符; 3、Γ 是带字母表,其中 □∈Γ且Σ∈Γ ; 4、 δ:Q ×「 → Q × Γ × {L,R} 是转移函数,其中L,R 表示读写头是向左移还是向右移; 5、q0∈Q是起始状态; 6、qaccept是接受状态。 7
一个会写诗的程序员
2020-02-25
4510
HashMap的尾部遍历问题 (Tail Traversing)
JDK1.7的HashMap在实现resize()时,新table[]的列表采用LIFO方式,即队头插入。 这样做的目的是:避免尾部遍历。
一个会写诗的程序员
2020-02-24
4540
【架构师修炼之路】Redis 极简教程 : 基本数据结构, 跳表原理
Github: https://github.com/antirez/redis
一个会写诗的程序员
2019-11-12
7630
并发安全的 ConcurrentHashMap 实现原理详解并发安全的 ConcurrentHashMap 实现原理详解不变(Immutable)和易变(Volatile)定位段
哈希表是中非常高效,复杂度为O(1)的数据结构,在Java开发中,我们最常见到最频繁使用的就是HashMap和HashTable,但是在线程竞争激烈的并发场景中使用都不够合理。
一个会写诗的程序员
2018-08-17
2450
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档