认识线性表和顺序表以及ArrayList在java中的用法
线性表和顺序表
线性表(linear list):是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
线性表
1.顺序表(逻辑上线性,在内存中存储时,也是严格按照逻辑上的次序保存起来的)
2.链表(逻辑上线性,在内存中存储时,不保证连续性了)
数组就是一种“不是非常完备”的顺序表
数组中存在的问题:
1.无法严格区分容量和已有元素个数
例:long[]array = new long[5]
只能看出来容量是5,无法知道里面放了几个有效元素。
2.数组无法自行扩容
往array中放有效元素,最多放5个,再放就越界了。
而顺序表就先进多了,可以自行扩容,但必须连续
例:1 2 3
1 2 _ _3这种顺序表中不允许
ArrayList常见使用方法
java中已经提供的顺序表—类java.util.ArrayList
可以借助文档:
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html(英文)
线性结构
特点:
(1). 元素和元素之间有前后关系
(2). 元素会有在第几个位置的概念,位置通过下标(index)表示,从 0 开始
(3). 插入可以根据位置的不同,分为:头插、尾插、按位置插入
(4). 删除可以根据位置的不同,分为:头删、尾删、按位置删除
(5). 遍历可以分为从前往后遍历和从后往前遍历
(6). Java 中,List 是一个接口,并且是 Collection 的子接口
1.boolean add(元素类型 e);
向顺序表中进行“尾插”,一定true
代表将 e 尾插到线性表中,e表示待插入的元素,一定会插入,线性表不会出现插入不成功的情况的。
在写代码时知道:
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// 定义一个元素类型是 String 的顺序表
ArrayList