HashMap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。 遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null HashMap...
get()方法: 主要是调用getNode()方法,如果找不到返回null 先调用hash计算哈希值,获取通下标,然后再判断第一个节点是否为红黑树,如果是红黑树,则通过树的方式获取,否则还是按照链表的方式获取...
在平常我们用HashMap的时候,HashMap里面存储的key是具有良好的hash算法的key(比如String、Integer等包装类),冲突几率自然微乎其微,此时链表几乎不会转化为红黑树,但是当key为我们自定义的对象时,我们可能采用了不好的hash算...
1、List、Set都是继承Collection接口;List有序且可以有重复元素;Set无序且不能有重复元素 2、List:一个有序集合,可以存储一组不唯一(可以有多个元素引用相同的对象)、有序的对象; 该集合用户可以精准控制每个元素的插入位置...
极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么,如何实现的。
ConcurrentHashMap由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁(ReentrantLock),扮演锁的角色;HashEntry用于存储键值对数据。 为了能通过位于散列算法来定位segment数组的索引,必须保证Segment数组...
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2...
发现使用 switch case 是最快的,hashmap 第二, if else 是最慢的。 所以多个判断的话还是用 switch 比较好。
2 是上两项的和(1+1) 3 是上两项的和(1+2)、 5 是(2+3)、 依此类推!
使用协程,相信很多同学已经信手拈来了,但是关于ViewModelScope,可能很多同学在用,但却不知道原理,今天来一探究竟。