资讯专栏INFORMATION COLUMN

一文掌握关于Java数据结构所有知识点(欢迎一起完善)

keithxiaoy / 3240人阅读

摘要:是栈,它继承于。满二叉树除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。没有键值相等的节点。这是数据库选用树的最主要原因。

在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫)。所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系统的Java学习以及面试的相关知识。本来是想通过Gitbook的形式来制作的,后来想了想觉得可能有点大题小做。另外,我自己一个人的力量毕竟有限,希望各位有想法的朋友可以提issue和pull。

Java面试通关手册(Java学习指南)github 地址:https://github.com/Snailclimb/Java_Guide

如果你觉得有什么问题可以给我提issue,觉得不错的话你也可以star一下。目前更新的内容并不多,因为为了保证文章质量,每一篇文章我自己都看了一遍,希望大家贡献自己的力量完善。

数据结构

推荐学习视频:浙江大学数据结构国家精品教程

Queue

Java集合类分析之Queue

Set

由浅入深理解java集合(二)——集合 Set

List

Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。

LinkedList 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。

Vector 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。

Stack 是栈,它继承于Vector。它的特性是:先进后出(FILO, First In Last Out)。

集合框架源码学习之ArrayList

注意ArrayList的扩容机制(注意移位运算符的使用)以及System.arraycopy()和Arrays.copyOf()方法在ArrayList集合源码中的使用。

集合框架源码学习之LinkedList

java数据结构与算法之顺序表与链表深入分析

Map

集合框架源码学习之HashMap(JDK1.8)

ConcurrentHashMap实现原理及源码分析

Stack(栈)

java数据结构与算法之栈(Stack)设计与实现

1 二叉树

二叉树(百度百科)

(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

(3)平衡二叉树——平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

2 完全二叉树

完全二叉树(百度百科)

3 满二叉树

满二叉树(百度百科,国内外的定义不同)

国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。

4 二叉查找树(BST)

浅谈算法和数据结构: 七 二叉查找树

二叉查找树的特点:

若任意节点的左子树不空,则左子树上所有结点的 值均小于它的根结点的值;

若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

任意节点的左、右子树也分别为二叉查找树。

没有键值相等的节点(no duplicate nodes)。

5 平衡二叉树(Self-balancing binary search tree)

平衡二叉树(百度百科,平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等)

6 红黑树

红黑树特点:

每个节点不是红色就是黑色的;

根节点总是黑色的;

所有的叶节点都是是黑色的(红黑树的叶子节点都是空节点(NIL或者NULL));

如果节点是红色的,则它的子节点必须是黑色的(反之不一定);

从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑色高度)

  [漫画:什么是红黑树?](https://juejin.im/post/5a27c6946fb9a04509096248#comment)(也介绍到了二叉查找树)
 
  [寻找红黑树的操作手册](http://dandanlove.com/2018/03/18/red-black-tree/)(文章排版以及思路真的不错)

  [红黑树深入剖析及Java实现](https://zhuanlan.zhihu.com/p/24367771)(美团点评技术团队)    

7 B-,B+,B*树

[二叉树学习笔记之B树、B+树、B*树 ](https://yq.aliyun.com/articles/38345)

[《B-树,B+树,B*树详解》](https://blog.csdn.net/aqzwss/article/details/53074186)

[《B-树,B+树与B*树的优缺点比较》](https://blog.csdn.net/bigtree_3721/article/details/73632405)

B-树(或B树)是一种平衡的多路查找(又称排序)树,在文件系统中有所应用。主要用作文件的索引。其中的B就表示平衡(Balance)

B+ 树的叶子节点链表结构相比于 B- 树便于扫库,和范围检索。

B+树支持range-query(区间查询)非常方便,而B树不支持。这是数据库选用B+树的最主要原因。

B树 是B+树的变体,B树分配新结点的概率比B+树要低,空间使用率更高;

8 LSM 树

[[HBase] LSM树 VS B+树](https://blog.csdn.net/dbanote...

B+树最大的性能问题是会产生大量的随机IO

为了克服B+树的弱点,HBase引入了LSM树的概念,即Log-Structured Merge-Trees。

LSM树由来、设计思想以及应用到HBase的索引

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69312.html

相关文章

  • 轻松搞定计算机网络面试(欢迎共同完善

    摘要:小哥哥小姐姐我有一份面试指南你要吗可以当做参考文章看计算机网络之面试常考附加一些重要的知识点三次握手和四次挥手面试常客为了准确无误地把数据送达目标处,协议采用了三次握手策略。 个人力量与时间有限,欢迎大家一起完善 Java面试通关手册(Java学习指南)github 地址:https://github.com/Snailclimb/Java_Guide 非常推荐大家看一下 《图解HTT...

    xiongzenghui 评论0 收藏0
  • 初学者福音!可能是最适合你的Java学习路线和方法推荐。

    摘要:学习完多线程之后可以通过下面这些问题检测自己是否掌握,下面这些问题的答案以及常见多线程知识点的总结在这里。可选数据结构与算法如果你想进入大厂的话,我推荐你在学习完基础或者多线程之后,就开始每天抽出一点时间来学习算法和数据结构。 我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 35k+ Star。会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://...

    yanest 评论0 收藏0
  • 一文掌握 Spring Boot Profiles

    摘要:需要注意的是必须要使用版本为以上才支持属性。与格式文件不同,正对不同的,无法在一个文件设置,官方采用命名形式为格式来达成一样的效果。采用方式添加的是属于额外激活的,也就是说覆盖掉外部传入的指定的。 showImg(https://segmentfault.com/img/remote/1460000019924197?w=1050&h=500); Spring Boot Profile...

    Eidesen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<