初识线性表-顺序表以及ArrayList常见用法

本文介绍了线性表和顺序表的概念,强调了数组与顺序表的区别,并详细讲解了Java中ArrayList的常见使用方法,包括添加、删除、查找、替换等操作及其规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认识线性表和顺序表以及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<String> list = new ArrayList<>(); // 一开始是一个空的顺序表

        list.add("我");  // 由于元素类型是 String 类型,所以元素(参数)类型是String
        list.add("你");
        list.add("他");

        System.out.println(list);

这是进行尾插的结果
在这里插入图片描述
2.void add(int index, 元素类型 e);代表向顺序表中插入e元素,放到下标为index的位置,要求原来 index 及之后的元素全部向后移动

在这里插入图片描述
例如add(1,元素),变成
在这里插入图片描述
添加代码

list.add(0, "你");
        System.out.println(list);

变为
在这里插入图片描述
3.元素类型 remove(int index); 表示删除 index 位置的元素,并返回该元素;要求 原来 index + 1 及之后元素全部向前移动。
在这里插入图片描述
在这里插入图片描述
添加代码

list.remove(2); 
System.out.println(list);

结果:
在这里插入图片描述
4.boolean remove(元素类型 e);
规则:
在这里插入图片描述
添加代码:

boolean b = list.remove("我");
System.out.println(list);  

结果
在这里插入图片描述
4.元素类型 get(int index);返回 index 位置的元素
在这里插入图片描述
在这里插入图片描述

System.out.println(list.get(0));

结果
在这里插入图片描述
5.元素类型 set(int index, 元素类型 e);用新的元素 e 替换 index 位置的元素,并返回 index 位置的原来的元素。
在这里插入图片描述
添加代码

System.out.println(list.set(1,"谁"));
        System.out.println(list);

结果
在这里插入图片描述
6.boolean contains(元素类型 e);通过遍历的方式,判断顺序表中是否包含该元素,包含返回true,否则返回false。
代码

System.out.println(list.contains("我"));

结果
在这里插入图片描述
7.int indexOf(元素类型 e); 返回该元素从前往后找的首次遇到的下标,如果没找到返回-1
代码

System.out.println(list.indexOf("ta"));  

结果
在这里插入图片描述
8.int lastIndexOf(元素类型 e); 返回该元素从后往前找的首次遇到的下标,如果没找到返回-1
代码

 System.out.println(list.lastIndexOf("谁"));

结果
在这里插入图片描述
9.void clear(); 清空一个顺序表,无论原来顺序表中有没有元素,调用该方法后,size==0
代码

list.clear();
          System.out.println(list);

结果
在这里插入图片描述
10.int size(); 返回顺序表中当前已有的元素个数

System.out.println(list.size());

结果
在这里插入图片描述
11.boolean isEmpty(); 判断顺序表是否为空,空返回true,非空返回false

System.out.println(list.isEmpty());

结果
在这里插入图片描述
空顺序表有两种情况
在这里插入图片描述

总结
在这里插入图片描述
核心:
1.顺序表中不允许出现空洞
2.index 的下标合法取值——肯定和size() 有关
add: [0,size]
remove/get/set: [0,size)

常见方法关系
在这里插入图片描述
在这里插入图片描述
这个组织ArrayList不是十分懂,先记录下来
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值