西维蜀黍

【Java】集合类 - ArrayList

ArrayList介绍

ArrayList是一种线性数据结构,它的底层是用数组实现的,相当于动态数组。与Java中的数组相比,它的容量能动态增长。类似于C语言中的动态申请内存,动态增长内存。

当创建一个数组的时候,就必须确定它的大小,系统会在内存中开辟一块连续的空间,用来保存数组,因此数组容量固定且无法动态改变。ArrayList在保留数组可以快速查找优势的基础上,还解决了自动扩容问题。

  ...


【Data Structure】数组(Array)

数组(Array)

数组(Array),是线性表一种实现方式,用于存储逻辑关系为“一对一”的数据。

数组存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。

  ...


【Algorithm】什么是算法(Algorithm)

算法(Algorithm)

**算法(Algorithm)**是解决特定问题求解步骤的的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

对于给定的问题,是可以有多种算法来解决的。

  ...


【Data Structure】什么是数据结构

什么是数据结构

数据(Data):从计算机的角度来看,数据是所有能被输入到计算机中且能被计算机处理的符号的集合。它是计算机操作的对象的总称,也是计算机处理信息的某种特定的符号表示形式(二进制码的抽象表示?)。

数据对象:数据对象是性质相同的数据元素的集合,是数据的子集。 什么叫性质相同呢,是指数据元素具有相同数量和类型的数据项,比如,人都有姓名、生日、性别等相同的数据项。

数据元素(Data Element):数据元素是数据中的一个个体,是数据的基本单位,在计算机中通常作为一个整体来进行考虑和处理。

数据项(Data Object):一个数据元素可以由多个数据项组成。数据项是具有独立含义的数据最小单位。

  ...


【Data Structure】线性表(Linear List)

线性表(Linear List)

基本概念

线性表(List):由零个或多个数据元素组成的有限序列。

  • 线性表是一个序列。
  • 0个元素构成的线性表是空表。
  • 线性表中的第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继。
  • 线性表是有长度的,其长度就是元素个数,且线性表的元素个数是有限的,也就是说,线性表的长度是有限的。

如果用数学语言来进行定义,可如下:

若将线性表记为(a1,…,ai-1,ai,ai+1,…an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。


数组,链表、队列、栈等都是线性表结构。

而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。

  ...