对于刚刚接触编程语言的人来说,抽象的数据结构一直被认为是最难学的知识点之一,因为数据结构仅仅只是一种思想,所以很多程序员会避重就轻,对于数据结构并不会深入理解,而是把重点放在学习编程语言方面。这虽然会让前期的学习看起来更简单明了,但如果没有对数据结构有很好的掌握,在后期进阶的路上,将会察觉到异常艰难,会觉得干涩难懂。
所以,数据结构是程序员初期必须要会的东西。我们今天就Java的数据结构类型及其各自不同的特性进行深入挖掘,通过把抽象的数据结构转化成具有实质性的词语,以此方便大家更好的理解与运用。
数据结构定义为计算机存储、组织数据的方式。计算机产生的最初目的是用来解决数值计算问题,随着互联网发展,技术水平越来越先进,而今在计算机领域,非数值计算问题占据了大部分的空间,传统的计算机技术已经不能满足解决此类问题的需要,数据结构的重要性立即显现出来。
在Java编程中,如果想有效解决问题,就必须要设计出最佳的数据结构。程序员的工作就是设计各种程序,而程序的基础核心可以说是算法+数据结构的组合体。一个好的稳固的程序,必须需要强大算法基础和数据结构作为支撑。最重要的是,掌握数据结构能让我们慢慢一种能力,就是把现实问题转化为计算机能识别的语言表示。
Java中,常用的数据结构分为三种:线性结构、层次结构和网状结构。
线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。
线性结构即线性表,它由数组、单向链表、双向链表组成。对于Java而言,数组中,Collection集合中提供了ArrayList和Vector。单向链表由节点组成每个节点都包含下一个节点的指针。双向链表和单链表一样,也由节点组成但它的节点中都有两个指针。
Java的层次结构方便了TDD开发和面向接口开发这两种开发方式的结合。Java语言中有四个层次结构,上层可以调用下层。从最下到上依次分布为:dto层、dao层、service层、controller层,每层所代表的意义不同。例如,dto层代表实体类,dao层定义实际使用方法,service层对数据进行处理,controller层一边接收前台数据,一边将后台数据传递到前台显示。
网状结构在Java中,用有向图表示实体和实体之间的联系。网状结构中所有节点允许脱离父节点而存在,每个节点表示一个实体,节点之间的有向线段表示实体之间的联系。