【JAVA】线性表的数组实现

数组实现线性表(java) 文章目录线性表的定义使用数组实现顺序表顺序表的API设计代码实现时间复杂度 线性表的定义 0个或者多个数据元素的有限序列,数据元素之间的关系是一对一,第一个元素没有前驱元素和最后一个元素没有后继元素外,其它数据元素都有前驱和后继 使用数组实现顺序表 算法:描述解决问题的步骤 在计算机上描述解决问题的步骤,需要使用流程控制 数组:一段连续的存储空间 线性表:线性表是数据结构的一种,数据结构是数据元素之间的关系,线性表中数据元素的关系就是线性表的定义,数据元素的上层是数据对象,数据对象是数据元素相同的数据元素的 阅读详情

看如下代码片:

 class ArrayList {
    private int length = 20;
    private int[] data = new int[length];
    private int size = 0;

在这个类里面,我们用的数据结构是数组。

优点
他的好处是,他的空间是连续的,通过索引访问素的特别快,并且需要编写的查询的代码少。。

缺点
他的缺点就是,添、删、改的时候特别麻烦,特别是添和改的时候要移动数组,数组容易越界。为此要创建空间较大的数组,由此,其空间复杂度和时间复杂度都很高。

下面是完整代码及其相关注释:

import javax.sound.midi.Soundbank;
/**
 * 自己写的集合类
 */
class ArrayList {
    private int length = 20;
    private int[] data = new int[length];
    private int size = 0;

    /**
     * 查
     *
     * @param i
     * @return
     */
    public Integer get(int i) {
        if (i < 0 || i >= size) {
            return null;
        }
        return data[i];
    }

    /**
     * 删
     *
     * @param
     */
    public void remove(int i) {
        if (i < 0 || i >= size) {
            return;
            //在异常的情况下,我们就将异常抛出,
            //什么都不返回。
        }
        if (i == size - 1) size--;

        //删除元素的方法是从最后一个元素开始,
        //往删除元素的索引位置进行覆盖,
        for (int t = i; t < size - 1; t++) {
            data[t] = data[t + 1];
        }
        //因为我们删除了一个元素,
        //所以最后一个索引为size的元素不用。
        //此时t=size-1是最后一个元素,
        //如果t再加1就越界了。

        //比如:数组{20,30,34},如果我们删除了34,则
        //之后遍历数组的索引位置为size=2的元素,即为最后一个元素。
        //所以把后面的元素往前覆盖,size还得减1,
        size--;
    }

    /**
     * 添
     *
     * @param d
     */
    public void add(int d) {
        if (size < length) {
//            size小于length判断为越界的条件
///        this.data[0]=d;
            this.data[size] = d;
//            size++;
//        但是,里面不能用常量,要用变量。
        } else {
            length *= 2;
            //防止数组越界而增大数组的长度

            int[] b = new int[length];

//           赋值进去,遍历a和b。
            for (int i = 0; i < size; i++) {
                b[i] = data[i];
            }
            data = b;
            data[size] = d;
//            size++;
            //注意上面已经++过,所以可以将size++放在外面。
        }
        size++;
    }
}

class 线性表的数组实现 {
    public static void main(String[] args) {
        ArrayList a = new ArrayList();

//        /**
//         * 自己创建数组的方式进行元素的添、删、改和查
//         */
//        int[] a=new int[20];
//        a[0]=20;
//        a[1]=33;
//        ...
//        考虑数组越界
//        int[] b=new  int[a.length*2];//拓展数组
//        for(int i=0;i<a.length;i++){
//            b[i]=a[i];
//        }
//        a=b;
//        a[20]=234;
//        ...
//        a[5]=0;
//        此代码要重复去写,比较浪费时间,
//        但是删除后面的元素又不符合要求。
//        此时,可以考虑将此段代码封装起来。

        a.add(23);
        a.add(33);
        a.add(34);
        a.add(43);
        a.add(35);
        a.add(45);
        a.add(56);
        a.add(67);
        a.add(76);
        a.add(78);
        a.add(87);
        a.add(89);
        a.add(98);
        a.add(10);
        a.add(11);
        a.add(21);
        a.add(13);
        a.add(41);
        System.out.println(a.get(5));
        a.remove(5);
        System.out.print(a.get(5));
        //第六个元素被替换成第七个元素了,
        //即后面的元素替换了前面的元素。

        //以后在写数据的时候,我们把方法都封装起来,
        //通过调用实现数组的添、删、改和查。
    }
}

Java定长数组线性表实现指南 在计算机编程中,数组是一种基础且广泛使用的数据结构,它能够存储一系列相同类型的数据元素。Java中的定长数组,即固定大小的数组,是最基本的数组形式。定长数组在内存中的布局是连续的,这意味着数组中的元素在物理地址上也是连续排列的。定长数组的一个关键特性是其容量在创建时就被确定下来,之后不能更改。这种数据结构的优势在于其访问速度非常快,因为可以通过索引直接访问元素,而不需要遍历集合。然而,定长数组的局限性在于其无法适应元素数量的动态变化,一旦数组创建后,其大小就固定不变。 阅读详情

相关推荐

用数组实现线性表各种操作(C语言)完结

NULL 博文链接:https://linuxdev.iteye.com/blog/1137108

封装自定义数组类(java版线性表)

package com.huowolf.test; public class MyOrderedArray { private long[] arr; //数组中有效元素的多少 private int elems; public MyOrderedArray() { arr = new long[50]; } public MyOrderedArr

技术宅--火狼的专栏 1419

51单片机pwm控制LED亮度

大大的好#include //模拟PWM输出控制灯的10个亮度级 unsigned int scale; //占空比控制变量 sbit P0_0=P2^0; void main(void) // 主程序 { unsigned int n; //延时循环变量 TMOD=0x01; //定时器0,工作模式2(0000,0010),8位定时模式 TH0=0xff; //写入预置初值6到定时器0,使250微秒溢出一次(12MHz) TL0=0xa4; //写入预置值 TR0=1; //启动定时器 ET0=1; //允许定时器0中断 EA=1; /

线性表的数组实现(Java实现)

1、实现public void removeRange(int from, int to),删除位置为[from, to]的所有数据。 2、设顺序表中的数据元素递增有序。实现public void insertSortedList(T x),将x插入到顺序表的适当位置上,以保持该表的有序性。

m0_53676388的博客 294

第4章 Stata参数检验

目录 4.1单一样本T检验 案例延伸 4.2独立样本T检验 案例延伸 1.改变置信水平 2.在异方差假定条件下进行假设检验 4.3配对样本T检验 案例延伸 1.改变置信水平 4.4单一样本方差的假设检验 案例延伸 4.5双样本方差的假设检验 参数检验(Parameter Test)是指对参数的平均值、方差、比率等特征进行的统计检验。参数检验一般假设统计总体的具体分布为已知,但是其中一些参数或者取值范围不确定,分析的主要目的是估计这些未知参数的取值,或者对这些参数进...

qq_45112156的博客 1万+

lvgl 实现表格table,并且固定表头

嵌入式实现table,lvgl 实现原生表格table组件

m0_61704502的博客 1272

线性表的实现(Array数组)

线性表的模拟,底层实现是数组Array。

qq_53263466的博客 823

ESP32IDF 通过 PCA9685控制舵机的程序bug处理

esp32 PCA9685 bug 舵机

ztvzbj的博客 726

Java线性表 插入、删除、查找、替换等功能

1、编写程序,实现以下操作:在线性表中插入一个元素,再删除指定位置的元素,分别输出插入、删除后的线性表。 2、在顺序表中设计函数实现以下操作: (1).求顺序表中的最大值和最小值。 (2).在顺序表中删除具有最小值的元素(假设顺序表中元素都不相同) ,并由函数返回被删除元素的值,空出的位置由最后一个元素填补。

ChengShuang2001的博客 2923

跨平台CMake AutoSAR

AutoSAR是汽车行业采用的一种软件架构标准,它旨在提供一个通用的软件平台,使得汽车软件的开发和集成变得更加高效和灵活。总结一下,CMake AutoSAR是一个强大的跨平台工具,为AutoSAR开发提供了便利。通过简单的配置文件和命令,开发人员可以实现高效、灵活的跨平台开发,并加快自动驾驶系统的开发进程。上述示例中,我们定义了一个名为AutoSAR的项目,指定了源代码文件的路径和依赖库的路径。通过简单的配置文件和命令,开发人员可以实现高效、灵活的跨平台开发,并加快自动驾驶系统的开发进程。

EcmFsharp的博客 233

修改Windows hosts文件的解决方案

本文主要介绍了修改Windows hosts文件解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 安装软件 2.2 修改hosts文件

weixin_43178406的博客 1万+

基于数组实现的线性表(Java语言实现)

使用Java语言,利用数组实现线性表的增删改查功能,期待你的CTRL+C

hutaa的博客 355

ABAP链接外围数据库SQL实战案例

这是一个ABAP 直接读取SQL数据库数据的实例,以此种方式可以将SAP与外围的系统做一些集成,比如生产,SAP本身生产这部分是弱项,管不了那么细,很多车间的数据都是在MES系统,如管理上需要则可以将MES的一些数据自动读取过来,结合SAP本身的业务数据,做一些分析是比较方便的。 1、首先在SAP里建立数据库链接:DBCO ,直接增加一条记录,填上数据库的相关信息:IP地址、数据库名、账号SA、密码这些。 2、开发程序,设置成自动运行的计划,固定时间自动读取SQL里的数据,保存到SAP自定义表.

heng0757的专栏 1511

java 数组可以看做是线性表_java数据结构:线性表之数组实现

导语数据结构中最简单的结构就是线性结构。线性结构又分为多种类型:顺序线性表、链式线性表、栈、队列、堆等等今天我们来复习一下如何使用数组来实现线性表设计抽象数据类型ADT数据结构实际上就是针对一系列数据,设计一系列针对这些数据的操作方法,由于这些数据和操作方法一般来说是共性的特征,所以我们可以使用接口来进行抽象。接口代码如下所示:package com.zhanwj.datastructure;pu...

weixin_32334209的博客 248

QGC4.0.11界面修改

QGC4.0.11。

超维空间科技的博客 2468

Oracle EBS的帐套由“4C”构成,而华为MetaERP将其发展为“6C”

华为MetaERP从OracleEBS的"4C"架构升级为"6C",实现核算理念革新。核心突破在于将会计科目、核算维度和核算单元解耦,形成"科目表+维度库"的灵活架构。新架构优势显著:1)科目回归会计本质,管理维度独立扩展;2)支持无限维度的精细化核算;3)实现数据权限隔离和内部交易自动化;4)采用元数据驱动设计,为AI应用奠定基础。这一平台化架构解决了大型企业在全球化、多元化发展中的核算难题,相比传统架构具有更强的灵活性和扩展性。

金牌架构师 204

java 数组线性表_java实现线性表(数组实现)

java实现线性表今天复习数据结构的线性表 ,顺便用java实现(虽然学过c,但是荒废了-->>>),java 和c/c++的区别就是少了指针,但是照样可以实现数据结构,它是用对象的引用代替指针,指针可以参与运算,而引用不可以,所以说引用其实还更安全。下面就是源代码:先定义接口:package com.guobing.list;public interface List {pub...

weixin_34725044的博客 484

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

线性表的java实现(数组,链表)

package com.nobody.list; /** ADT线性表接口 * 线性表的元素位置从1开始 */ public interface ListInterface{ /** Task:往线性表的末尾插入新元素 * @param newEntry 做为新元素插入的对象 * @return 如果插入成功则返回true,否则返回false */ public

nobodys 675

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

3 代码-线性表 - java数组实现方式

package com.java.datastructure.lineartable; // 线性表 - java数组实现方式 public class ArrayLinkList { private Object[] data; private int length; private int MAXSIZE; public ArrayLinkList(int ...

huchunbin的专栏 203

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

线性表代码java_3 代码-线性表 - java数组实现方式

package com.java.datastructure.lineartable;// 线性表 - java数组实现方式public class ArrayLinkList {private Object[] data;private int length;private int MAXSIZE;public ArrayLinkList(int MAXSIZE) {this.MAXSIZE =...

weixin_34286410的博客 141

java 数组可以看做是线性表_[图解数据结构之Java实现](1) --- 线性表之数组实现...

本文行文思路结构一. 线性表二. 数组三. 表的简单数组实现四. 表的各种基本操作 --- 增删改查1. 图解分析2. 代码实现五. 完整测试代码六. 总结一. 线性表线性结构是数据结构中三种基本结构之一. 而线性结构的特点是:在数据元素的非空有限集合中存在唯一的一个被称为"第一个"的数据元素;存在唯一的一个被称为"最后一个"的数据元素;除第一个之外, 集合中的每个数据元素均只有一个前驱;除最后一...

weixin_32567865的博客 310

java 数组可以看做是线性表_java使用数组实现线性表功能(增、删、查、改)

package com.fcy.dataStruct;import java.util.Arrays;public class SequenceList {private int DEFAULT_SIZE=16;//保存数组的长度private int capacity;//定义一个数组用于保存顺序线性表的元素private Object[] elementData;//保存顺序线性表中元素的当前...

weixin_30420045的博客 289

JAVA基础-利用数组实现线性表

1.有下标索引,基于下标操作速度很快2.数组存储占用一块连续的空间3.插入操作慢,且增加数据不能扩容4.删除操作需要后置数据前移1. 链表数据以节点的形式分散存储2.不需要扩容3.删除和插入操作很快这里附上全部代码//元素数量,下一次要存储的下标//当前数组链表长度//默认的初始容量//简单的构造方法,不传入参数size=0;//初始化方法size=0;//初始化数组链表长度,传入参数为自定义长度,分三种情况//必须大于0。

lwxklts的博客 622

Java实现:数组实现可扩容线性表

/* 数组实现可扩容线性表 */ class MyArrayListTest { public static void main(String[] args) { MyArrayList<String> arrayList = new MyArrayList<>(3); arrayList.add("a"); arrayList.add("b"); arrayList.add("c"); arr

Xrj_int的博客 298

Java实现基于数组实现的线性表

线性表 数组 记录一下用数组实现的线性结构,并实现增删改查。 为了能让自己实现的基于数组的线性结构具有普遍性,我们使用的是泛型程序设计 public class MyString<E> { private E[] arry; private int size; E[] arry是一个泛型数组,现在还没有初始化,此时相当于c++中的没有指向任何内存的空指针.和数组是一样...

qq_39401252的博客 739

java 数组可以看做是线性表_Java 数组实现线性表

线性表的API:=====================================================================void add(Item item) 追加新元素Item get(int idx) 获取指定索引的元素void set(Item item, in...

weixin_34828705的博客 209
上一篇: 【MATLAB】字符串处理
下一篇: 【JAVA】链式存储(封装)
寻爻青年
博客等级 码龄8年 27粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻爻青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值