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

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

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

数据结构

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

Queue
Java集合类分析之Queue

Set

[由浅入深理解java集合(二)——集合 Set](https://www.jianshu.com/p/9081017a2d67)

List

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

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

**LinkedList** 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。**Vector** 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。

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

[集合框架源码学习之ArrayList](https://juejin.im/post/5aafa05a6fb9a028c06aa217)注意ArrayList的扩容机制(注意移位运算符的使用)以及System.arraycopy()和Arrays.copyOf()方法在ArrayList集合源码中的使用。[集合框架源码学习之LinkedList](https://juejin.im/post/5aafab9651882555635e219a)[java数据结构与算法之顺序表与链表深入分析](https://blog.csdn.net/javazejian/article/details/52953190)

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)

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

二叉查找树的特点:

1. 若任意节点的左子树不空,则左子树上所有结点的     值均小于它的根结点的值;
2. 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
3. 任意节点的左、右子树也分别为二叉查找树。
4. 没有键值相等的节点(no duplicate nodes)。

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

6 红黑树
红黑树特点:

  1. 每个节点不是红色就是黑色的;2. 根节点总是黑色的;3. 所有的叶节点都是是黑色的(红黑树的叶子节点都是空节点(NIL或者NULL));4. 如果节点是红色的,则它的子节点必须是黑色的(反之不一定);5. 从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑色高度)[漫画:什么是红黑树?](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的索引

本文作者:snailclimb

原文链接

本文为云栖社区原创内容,未经允许不得转载。

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

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

    摘要: 在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫).所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系统的Jav ...

  2. 一文读懂 Java 字符串相关知识点和常见面试题

    点击上方"黄小斜",选择"置顶或者星标" 你关注的就是我关心的! 作者:黄小斜 来源:微信公众号[程序员黄小斜] 目录 string基础 Java String ...

  3. 再也不担心问到Java集合了,一文讲透Java中的数据结构

    Java数据结构实现详解 摘要 1 集合框架 1.1 顶层接口Iterable 1.2 Collection接口 2 List 2.1 List接口 2.2 List实现ArrayList 2.2.1 ...

  4. 进大厂一条龙服务(Java核心面试知识点+一线大厂Java笔试面试题+月薪3万Java优秀简历模板),看这篇就够了

    你有没有觉得Java_工程师竞争压力大.就业困难?不知道面试Java工程师应该准备些什么?.. 现在一切都解决了!你想要的干货知识和面试题统统在这,还有月薪3万Java优秀简历模板,快拿回去嚼烂吧! ...

  5. Java研发工程师知识点总结

    Java研发工程师知识点总结 大纲 一.Java基础(语言.集合框架.OOP.设计模式等) 二.Java高级(JavaEE.框架.服务器.工具等) 三.多线程和并发 四.Java虚拟机 五.数据库(S ...

  6. java队列_如何彻底搞懂 Java 数据结构?CSDN 博文精选

    作者 | 张振华.Jack 责编 | 郭芮 出品 | CSDN 博客 本文和大家一起来重温<Java数据结构>经典之作. Java数据结构 要理解Java数据结构,必须能清楚何为数据结构? ...

  7. 清华学长免费分享Java基础核心知识点基础篇(2)

    Java编程作为入门比较容易的编程语言,发展前景很好,非常适合零基础的小白入门学习. 对所学知识点没有全面了解,学习的过程中容易进入误区,影响学习进度,成从入门到放弃.所以,今天播妞整理了一些适合小白 ...

  8. java数据结构 队列_Java数据结构与算法[原创]——队列

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...

  9. java数据结构排序实验报告_java数据结构与算法之插入排序详解

    本文实例讲述了java数据结构与算法之插入排序.分享给大家供大家参考,具体如下: 复习之余,就将数据结构中关于排序的这块知识点整理了一下,写下来是想与更多的人分享,最关键的是做一备份,为方便以后查阅. ...

最新文章

  1. net core mysql 连接池_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
  2. Android移动开发之【通往安卓的神奇之旅】Senior VIew高级组件与onClickListener()再探索
  3. 插入排序-by-Python
  4. tableau可视化函数使用案例(六十七)-如何用Tableau获取数据并对数据进行操作?
  5. 在 .NET Core 应用中使用 NHibernate
  6. nginx虚拟域名配置
  7. 规则绝对公平时,社会财富的流向谁?
  8. JavaScript JSON 对象使用详解、JSON. parse()、JSON. stringify()
  9. 站立会议01(冲刺2)
  10. AutoCAD Plant 3d管道设计基础到中高级进阶视频教程
  11. 最全的react视频【黑马程序员】--第一章 react介绍
  12. 三门问题(基于贝叶斯分析和python的实现)
  13. pci规划的三个原则_LTE小区PCI规划原则
  14. js 万年历农历转阳历 方法_JS实现带阴历的日历功能详解
  15. 海洋经济发展具体内容
  16. word怎么根据点画曲线_用word怎么画曲线图 word里如何绘制曲线图
  17. Three.js光源梳理3——平行光(DirectionalLight)
  18. 全球股市指数缩写及开盘时间
  19. mac删除core文件并关闭core文件以节约磁盘
  20. 计算机辅助设计选修课是学什么的,计算机辅助设计教学中的问题及改革

热门文章

  1. WAF自动化Fuzz工具-WAFNinja(绕WAF、绕过WAF)
  2. Python 字符串、时间、日期、时间戳的相互转换(时间戳转换)
  3. FTP:文件传输协议(指令及响应代码)
  4. Linux Sqlite3 基础知识
  5. 汇编语言:编写code段中代码,将a段和b段中的数据依次相加,将结果放到c段
  6. 常见的多变查询,和遇到的一些坑。。。。
  7. qt 保存文件为utf8
  8. Go语言反射之值反射
  9. css①字体颜色正常显示,背景透明②字体颜色与背景均为透明的设置方法
  10. erlang---启动参数学习/研究