java
文章平均质量分 64
ansmallwhite
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Monitor结构解读之EntryQ和WaitSet的区别
总之,EntryQ(或_EntryList)和WaitSet(_或WaitSet)在Java的monitor机制中分别管理着等待获取锁的线程和等待条件变化的线程。它们通过不同的机制来确保线程同步的正确性和高效性。原创 2024-07-08 17:50:50 · 846 阅读 · 0 评论 -
java集合中sublist()的坑
首先sublist(int start,int end)是前闭后开,之前用list.sublist()时候总觉得是截取一部分形成一个新的集合,有次在工作中发现已经截取过的新的list在其下方代码执行之后报错:java.util.ConcurrentModificationException。或者就new list(原表的sublist视图) 这样收到的就是独立存在的片段了;方法创建了一个原列表的视图,而不是一个全新的、独立的列表。返回的是一个视图,而不是一个独立的列表,因此在某些情况下需要小心使用。原创 2024-04-27 09:41:18 · 1966 阅读 · 0 评论 -
HashMap的若干细节
选择红黑树的原因:查询效率和hashmap相同,而且红黑树的失衡之后的复衡的代价比较低,不想平衡二叉树需要多次旋转(主要原因还是平衡二叉树追求极致的平衡)1.为什么hashMap使用红黑树而不是其他结构?在回答这个问题之前,我们先了解一下有关二叉树的基本内容。①二叉排序树(又称二叉查找树):1)若左子树不为空,则左子树上所有结点的值均小于根结点的值。2)若右子树不为空,则右子树上所有结点的值均大于根节点的值。3)左右子树也为二叉排序树。原创 2024-04-03 11:16:09 · 2315 阅读 · 1 评论 -
Comparable和Comparator比较器
对于自定义类的类型进行比较就需要制定比较规则,就出现了这两种比较方式,区别就是:Comparable比较器需要写在类内部,即需要排序的类需要继承此接口,然后在类内部重写compareTo方法,在主方法中调用Arrays.sort(需要排序的类名)或Collection.Sort(),在compareTo方法中定义排序规则(eg:根据特定的属性进行排序,由返回值确定)原创 2024-04-01 22:17:12 · 338 阅读 · 0 评论 -
computeIfAbsent?好使!
map.computeIfAbsent(fa,key->new ArrayList()),无论map里面有没有fa这个key值的键值对,在执行该语句之后fa就一定有一个value值被拿出来,要么是新建的,要么是此前就有的集合。computeIfAbsent会先判断fa这个key值是否存在map里面,如果不存在就new ArrayList(),如果存在就把key对应的ArrayList类型的集合返回出来。这个方法返回与指定键关联的值,无论它是通过映射函数计算得到的,还是之前就已经存在于映射中的。原创 2024-03-31 00:06:24 · 608 阅读 · 1 评论 -
HashMap.containsValue()解析
学习Map的时候毫无疑问containsKey()的原理一定是用key的hashcode定位,所以时间复杂度为O(1),但对于containsValue()并没有一个清晰的认识,仔细读了一下它的源码,觉得对hashmap的底层认识很有帮助。该方法遍历 HashMap 中的所有条目,检查是否有任何一个条目的值等于给定的值。中的条目数,因为需要遍历所有的条目来查找给定的值。在实际应用中,由于哈希表的分散性质,通常不需要遍历所有的条目就能找到值,所以平均时间复杂度通常要低于 O(n)。的实现和树化的阈值)。原创 2024-02-24 15:36:46 · 1252 阅读 · 1 评论
分享