![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 53
侠客岛主
这个作者很懒,什么都没留下…
展开
-
hashcode与HashMap
hashcode是对象在hash表中对应的位置. 而hash可能会发生hash冲突,所以可能存在不同对象hashcode是相同的. class Solution { public static void main(String[] args) { Integer a = 223; Integer b = 223; System.out.println(a == b); System.out.println(a.hashCode() ==原创 2021-06-02 07:28:23 · 661 阅读 · 0 评论 -
java线段树
class SegmentTree { //原数组 int[] arr; //线段树数组 int[] tree; public SegmentTree(int[] arr) { this.arr = arr; tree = new int[arr.length * 4]; buildTree(0, 0, arr.length - 1); } private void buildTree(int cur原创 2021-05-24 13:05:20 · 1001 阅读 · 2 评论 -
HashMap并发扩容死循环问题
HashMap没有使用考虑并发问题,必然是线程不安全的。 HashMap1.7每一个桶使用的是单向链表实现。而扩容采取的是头插法。 1.什么是头插法? 链表反转的迭代写法就是经典的头插法 例如链表:1——>2 设反转后为:reverse=null; 那么依次取链表的节点插入反转后的头部,并把当前节点赋给resvese就是头插法。 下面是简要代码: class ListNode { ... public ListNode reverseNode(ListNode root){ ListNod原创 2021-04-30 12:52:14 · 662 阅读 · 0 评论 -
java队列与栈操作方法的统一化
java的队列和栈的实现有多个实现,这就造成我们操作队列或栈的时候使用方法名称的多样性,为了统一和见名知意,我们统一使用如下。 1. 队列 一般队列 public interface Queue<E> extends Collection<E> { //添加到队列尾部,可能抛出的异常。如果容量被制定且满,抛出异常 boolean add(E e); /** 与add功能一样,但是容量受限的队列不会抛出一样 */ boolean原创 2020-09-12 03:25:26 · 183 阅读 · 0 评论 -
数据结构
- 二进制 1.把二进制最后一个1置为0 n&n-1 2.获取二进制最后一个1 n&(-n) 3.快速乘/快速乘方 ab不使用乘法的快速方法 ab可表示为a*x x为b的二进制数。原创 2020-09-08 02:42:27 · 127 阅读 · 0 评论