0系列文章导航
一、 概述
当我开始准备求职的时候,接到的第一个面试电话的第一个问题就是你了解基础的数据结构吗?现在已经晕晕乎乎可以写很多逻辑复杂的业务代码了,非但没觉得数据结构非常基础,却是觉得更加重要,无处不在,息息相关。所以决定重新梳理一下,并把自己的学习历程,分享出来与大家一起进步。
1. 数据结构概述:
数据结构是相互之间存在一种或者多种特定关系的数据元素的集合。我的体会是:在程序运行、持久化的时候,会涉及大量数据对象需要运算和存储,那么怎么高效率高可靠的组织他们之间的关系,就是数据结构存在的意义了。根据不同的使用场景特定,选择合理的数据结构,会使程序更加安全高效。常见的数据结构包括:数组、链表、栈、队列、树、图。。。
2. Java中的数据结构:
在Java.util包下,提供了List、Set、Map、Stack、Queue等数据结构的丰富实现,并通过Collections和Arrays提供了对集合类的便利操作。每种数据类型,都提供数组和链表的实现,有些事线程安全的有些不支持线程安全。此外还在concurrent包中提供支持并发的数据结构和工具。合理的选择和使用这些集合类的,可以提高我们代码的效率,学习其中的原理和底层的实现对我们合理的选择和使用集合类帮助很大。
3. 本系列学习思路和组织方式:
这里我们主要学习Java中的数据结构实现,对于树结构的算法和复杂度等不过多的展开。主要的组织方式按照Collection、Map接口的的子接口和实现类的架构顺序进行展开,如下图。同时,对于同一个数据类型的的不同实现分别进行分析(如List 的ArrayList和LinkedList)。先学习一些比较简单的结构实现,然后再循序渐进,比如首先会学习ArrayList、LinkedList,后面才会学习HashMap等结构,最后再学习ConcurrentHashMap。。。
本系列学习笔记会结合JDK源码,自己实现各种数据结构进而加深对JDK源码和Java集合框架的理解。自己写的集合框架的命名规则,是在jdk命名的基础上加上一个字母P,例如我们的集合最顶层接口为PCollection,迭代器接口为PIterator;