Java数据结构告诉你如何选用数据集合(1)

536 阅读3分钟

这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战

 开始学习编程的时候,目的在于如何实现功能。在我们熟悉编程之后,发现实现的方法是多种多样的。我们操作一个班级,可以选择数组、List、Set甚至于Map。但是具体实行起来,会发现情况复杂多变。而这个时候,实现方法的多样性也让我们束手无策。这个时候就需要数据结构登场了,学习数据结构我们就可以根据不同的情况选取最优的实现方法。当然了,还有一部分工作要结合软件工程和设计模式来实现。

下面我们来了解一下几个问题:

1、什么是数据结构?

2、数据结构有什么用?

3、数据结构在Java中的具体表现是什么?

下面一个个来解决这几个问题。

1、数据结构是以某种形式将数据组织在一起的合集。数据结构不仅是存储数据,还支持访问和处理数据的操作。 也就是说数据结构是:一组有组织的数据数据+数据的处理操作。

2、提高软件性能,这个在后面具体的数据结构中会了解到。

3、在Java中,一种数据结构就是一个容器,或者容器对象。(List、Set)

下面才是正题,线性表。

一、线性表的概念:

今天就来具体讲一下线性表。关于线性表的定义我这里就不赘述了,有一点理解线性表非常关键。线性表元素之间是一对一的关系,就是说线性表中的一个元素最多只有一个前驱元素和一个后继元素。 通俗讲就是 “前面一个,后面一个”。

二、线性表的存储结构

1、顺序存储结构:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素****

2、链式存储结构:在计算机中用一组任意的存储单元存储线性表的数据元素****

可能上面两句话没有解释太多内容,不过不要紧,后面会具体讲。

三、顺序表

1、什么是顺序表:顺序存储结构的线性表(哈哈,就是这样)

2、顺序表的特点:

  ①元素存储在一段连续内存当中

  ②查找速度快

  ③插入数据速度慢

3、Java中的线性表ArrayList

  在Java中,ArrayList就是一个线性表。List结构就是一个线性表的数据结构,它规定了线性表的共同属性和操作。在学习集合的    时候,发现List有一大堆实现类。其中ArrayList和LinkedList就是两个非常常用而且重要的类,它们也代表了线性表的两种存储      结构。ArrayList就是顺序存储结构,而LinkedList就是链式存储结构。

4、用Java编写一个顺序表

  因为篇幅的问题,后面我会另外写两篇或者一篇关于手动写顺序表和链表的文章。这里主要讲一些内容。

  ①线性表是通过数组实现的

  ②当数组长度不够时要重新创建一个数组(Java中数组是定长的)

四、链表

1、什么是链表:链式存储结构的线性表

2、链表的特点:

  ①元素在内存中随机存储

  ②查找速度效率低

  ③插入速度效率高

3、Java中的链表LinkedList:上面已经讲了,这里就不赘述了。

4、用Java编写一个顺序表

  ①链表是通过节点实现的

  ②节点里面有节点数据以及下一个节点的地址

除了ArrayList和LinkedList,Java中还有许多其它的线性表。以后有机会和大家细细研究。关于线性表的实现,后面也会补齐文章。