数据结构
数据结构
GaleZhang
这个作者很懒,什么都没留下…
展开
-
面试题:如何设计一个阻塞队列?
前言面试问到了这个问题,回答的很糟糕,这里记录一下。当时回答的是在读取时用while循环判断是否为空,是的话就sleep一段时间,再重新判断,不为空则读取并返回,在插入时用while循环判断是否为满,为满则sleep一段时间,再重新判断,不为满则插入。完全没有考虑线程安全的问题,同样用循环等待的方式也太过暴力了,实在是一个糟糕的设计。分析我们知道阻塞队列相比于普通队列,区别在于当队列为空时获取被阻塞,当队列为满时插入被阻塞。当被阻塞时,我们的获取或插入线程进入阻塞状态,当队列中有了元素或者有剩余空原创 2020-09-14 13:26:11 · 1467 阅读 · 0 评论 -
发现了TreeMap的一个坑,自定义Comparator导致put不成功
当自定义Comparator对TreeMap的key排序时,如果两个key的comparator相同,即compare方法的返回值为0的时候,会出现一个坑,如下:TreeMap<Integer,Integer> map = new TreeMap<Integer,Integer>((a, b) -> wgt[a] - wgt[b]);for(int i = 0; i < wgt.length; i++) { map.put(i,weight[i]); //当原创 2020-05-27 09:38:11 · 874 阅读 · 0 评论 -
详解布隆过滤器的原理、使用场景和注意事项
在进入正文之前,之前看到的有句话我觉得说得很好:Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different facility and benefits. To properly use the power and acces转载 2020-05-25 20:41:16 · 183 阅读 · 0 评论 -
红黑树
写在前面当在10亿数据中只需要进行10几次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感。终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家。红黑树是一种比较难的数据结构,要完全搞懂非常耗时耗力,红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?等等一连串的问题在学习前困扰着我。如果你在学习过程中也会存在我的疑问,...转载 2020-01-09 16:06:23 · 161 阅读 · 0 评论 -
Java HashMap整理
HashMap概述基于哈希表的Map接口的非同步实现。提供所有的映射操作,允许null值和null键。不保证映射的顺序,不保证顺序恒久不表。数据结构链表散列:数组+链表transient Entry[] table;static class Entry<K, V> implements Map.Entry<K, V> { final K key; ...原创 2019-12-16 13:20:25 · 143 阅读 · 0 评论