数据结构
数据结构
不死鸟.亚历山大.狼崽子
太极计算机股份有限公司系统架构师,从事ios、.net、flex、java等开发
展开
-
LinkedList(4):多线程LinkedList 不安全情况
使用ConcurrentLinkedQueue:cas(无锁化机制)加volatile 关键字来解决。结果如下图,没有写入四个,因为在现场运行过程中多个线程可能会抢占到相同的地址。多线程不安全演示,线程越多,现象越明显,这边只启了四个线程。原创 2023-09-04 21:07:01 · 878 阅读 · 0 评论 -
LinkedList(3):并发异常
因为在linklist初始化的时候,期望值expectedModCount和真实值modCount是一样的,而进行add()方法以后就不一样了。这个add方法会对期望值和真实值同时进行修改,所以无异常。如下图,只改变了modCount的值。原创 2023-09-04 16:36:57 · 870 阅读 · 0 评论 -
LinkedList(2):双向链表的实现
原因:双向链表可以在查找元素时,判断靠近头还是靠近尾,如果靠近头从头开始找,如果靠近尾从尾开始找。LinkedList 内部 size first last。可以从前指向后,也可以从后去指向前。双向链表遍历效率可能优于单向链表。原创 2023-06-23 14:33:19 · 58 阅读 · 0 评论 -
LinkedList(1):链表介绍和单向链表的实现
链表的分类:单链表,双链表,循环链表链表:由链将一个个元素连接,每一个元素我们通常将其称之为Node 节点Node 节点:由两部分组成数据值的变量Node next 用来存放下一个节点的Node 对象//双向链表链表和数组的区别链表查询慢(因为链表没有索引),但是增删快,设计接口目的:为了体系的完整,以及代码的复用,设计出以下结构需要实现的方法2.1 List 接口包含共性的方法。原创 2023-06-19 23:26:20 · 187 阅读 · 0 评论 -
TreeMap(3):自定义TreeMap集合
使用二叉树实现TreeMap集合,编写put(),get(),remove()等关键方法。原创 2023-05-28 01:11:10 · 197 阅读 · 0 评论 -
TreeMap(2):TreeMap的源码分析
【代码】TreeMap(2):TreeMap的源码分析。原创 2023-05-26 22:55:56 · 137 阅读 · 0 评论 -
TreeMap(1):TreeMap介绍
概念:TreeMap是一个双列集合,是Map的子类。底层由红黑树结构构成。特点:2.1二叉查找树2.1.1二叉查找树的定义特点:结论:二叉查找树就是每个结点的值按照大小排列的二叉树,二叉查找树方便对结点的值进行查找。图: 2.1.2 二叉查找树的查找操作查找方式:从根结点开始,如果要查找的数据等于结点的值, 那就返回。如果要查找的数据小于结点的值,那就在左子树中递归查找;如果要查找的数据大于结点的值,那就在右子树中递归查找。图: 2.2 平衡二叉树2.2.1平衡二叉树的定义为了避免出现"瘸子"的现象,减少树原创 2023-05-26 21:13:01 · 7740 阅读 · 0 评论