数据结构:JAVA 顺序表

2023-11-11

今天介绍的是java里面的顺序表。

目录

1.新建一个类并且初始化几个变量

2.display方法 :展示数组

 3.add方法:添加新元素

 4.contains:查询需要找的元素在不在数组中

    indexOf:找到这个元素

 5.get和set:获取某位置的元素


1.新建一个类并且初始化几个变量

public class ArrayList {

    public int elem[];//定义数组

    public int UsedSize;//定义数组使用了的大小

    public static final int DEFAULT_SIZE = 10;

    public ArrayList(){
        this.elem = new int[DEFAULT_SIZE];//把elem数组的大小初始化为10
    }

}

2.display方法 :展示数组

    public void display(){
        for (int i = 0; i <= UsedSize; i++) {
            System.out.println(this.elem[i] + " ");
            //只要把每一个elem里面的元素打印出来即为展示该数组
        }
    }

 3.add方法:添加新元素

    public void add(int pos,int data){ //pos为添加到的位置,data为要添加的数据
        if(isFull()){
            this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
            //判定数组是否是满的,如果是满的就需要用Arrays.copyOf函数扩容至两倍
        }
        if(pos < 0 || pos > UsedSize){
            System.out.println("这个位置不合法");
        }
        //pos需要大于0,并且小于数组的大小
        for (int i = this.UsedSize - 1; i >= pos ; i--) {
            this.elem[i+1] = this.elem[i];
            //前一个元素的值覆盖到后一个元素的值,可以让pos位置的元素和pos位置后一个元素的值相同
        }
        this.elem[pos] = data;
        this.UsedSize++;
    }

    public boolean isFull(){
        if(UsedSize > elem.length){
            return true;
        }
        return false;
    }

 4.contains:查询需要找的元素在不在数组中

    indexOf:找到这个元素

    public boolean contains(int toFind){
        if(isFull()){
            System.out.println("这个位置不合法 数组满了");
        }
        for (int i = 0; i < this.UsedSize; i++) {
            if(this.elem[i] == toFind){
                return true;
            }
        }
        return false;
    }
    public int indexOf(int toFind){
        if(isFull()) {
            System.out.println("这个位置不合法 数组满了");
        }
        for (int i = 0; i < this.UsedSize; i++) {
            if(this.elem[i] == toFind)
                return i;
        }
        System.out.println("这个数字不在数组中");
        return -1;
    }

 5.get和set:获取某位置的元素

    public int get(int pos){
        if(isFull()) {
            System.out.println("这个位置不合法 数组满了");
        }
        if(pos < 0 || pos > UsedSize) {
            System.out.println("这个位置不合法");
        }
        return this.elem[pos];
    }
    public void set(int pos,int val){
        if(isFull()) {
            System.out.println("这个位置不合法 数组满了");
        }
        if(pos < 0 || pos > UsedSize) {
            System.out.println("这个位置不合法");
        }
        this.elem[pos] = val;
    }

完整代码: 

import java.util.Arrays;


public class ArrayList {
    public int elem[];
    public int UsedSize;
    public static final int DEFAULT_SIZE = 10;

    public ArrayList(){
        this.elem = new int[DEFAULT_SIZE];
    }

    public void display(){
        for (int i = 0; i <= UsedSize; i++) {
            System.out.println(this.elem[i] + " ");
        }
    }

    public void add(int pos,int data){
        if(isFull()){
            this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
        }
        if(pos < 0 || pos > UsedSize){
            System.out.println("这个位置不合法");
        }
        for (int i = this.UsedSize - 1; i >= pos ; i--) {
            this.elem[i+1] = this.elem[i];
        }
        this.elem[pos] = data;
        this.UsedSize++;
    }

    public boolean isFull(){
        if(UsedSize > elem.length){
            return true;
        }
        return false;
    }
    public boolean contains(int toFind){
        if(isFull()){
            System.out.println("这个位置不合法 数组满了");
        }
        for (int i = 0; i < this.UsedSize; i++) {
            if(this.elem[i] == toFind){
                return true;
            }
        }
        return false;
    }
    public int indexOf(int toFind){
        if(isFull()) {
            System.out.println("这个位置不合法 数组满了");
        }
        for (int i = 0; i < this.UsedSize; i++) {
            if(this.elem[i] == toFind)
                return i;
        }
        System.out.println("这个数字不在数组中");
        return -1;
    }
    public int get(int pos){
        if(isFull()) {
            System.out.println("这个位置不合法 数组满了");
        }
        if(pos < 0 || pos > UsedSize) {
            System.out.println("这个位置不合法");
        }
        return this.elem[pos];
    }
    public void set(int pos,int val){
        if(isFull()) {
            System.out.println("这个位置不合法 数组满了");
        }
        if(pos < 0 || pos > UsedSize) {
            System.out.println("这个位置不合法");
        }
        this.elem[pos] = val;
    }
    public void remove(int key){
        if(isFull()) {
            System.out.println("这个位置不合法 数组满了");
        }

        int index = indexOf(key);
        if(index == -1){
            System.out.println("这个要删除的元素不存在");
            return;
        }
        for (int i = index; i < UsedSize; i++) {
            this.elem[i] = this.elem[i+1];
        }
        UsedSize--;
    }
    public void clear(){
        UsedSize = 0;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        System.out.println("添加前");
        arrayList.display();
        arrayList.add(0,3);
        arrayList.add(1,35);
        arrayList.add(2,37);
        arrayList.add(3,39);
        arrayList.add(4,33);
        arrayList.add(5,27);
        System.out.println("添加后");
        arrayList.display();
        System.out.println("删除第三个元素37");
        arrayList.remove(37);
        arrayList.display();
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构:JAVA 顺序表 的相关文章

  • sqli-labs:less-28(过滤了union和select)

    div div
  • C++——#ifndef和#ifdef宏定义的使用及作用介绍

    建议结合以下博客理解 头文件重复引用 https blog csdn net shenlanzifa article details 21071443 ifndef和 ifdef都是一种宏定义判断 作用是防止多重定义 ifndef是if n
  • element-plus 表单验证

    表单验证是使用率比较高的 和之前element版本也有些差别
  • 科技风UI除了蓝色,还有什么配色选择?

    今年做了一年的科技风 看到蓝色也是甚是觉得审美疲劳 在同类产品中体现出差异性也比较困难 寻思着除了蓝色 就没有别的配色选择了吗 通过对科技类设计的搜集 总结了科技风产品的配色文章参考 尽管我今年对蓝色够够了 但还是要分析下它作为FUI首选配
  • windows下,unity项目突然无法打开的挽救办法

    情景 项目在某次关机后就再也无法通过unity正常打开了 换了机器和unity版本也依然不行 如果你没做存档想必这是个令人非常崩溃的事情 但还有一种挽救的办法 至少是一种可能挽救的办法 那就是使用其他平台的unity打开项目 unity有w
  • 【Python网络蜘蛛】基础 - 多线程和多进程的基本原理

    文章目录 多线程和多进程的基本原理 多线程的含义 并发和并行 Python中的多线程和多进程 多线程和多进程的基本原理 在编写爬虫程序的时候 为了提高爬取效率 我们可能会同时运行多个爬虫任务 其中同样涉及多进程和多线程 多线程的含义 先了解
  • 面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?

    点击上方 Java之间 选择 置顶或者星标 你关注的就是我关心的 来源 https dwz cn exC8JdQS 上一篇 InnoDB的一棵B 树可以存放多少行数据 答案 约2千万 为什么是这么多 因为这是可以算出来的 要搞清楚这个问题
  • pandas创建与保存(导入与导出)dataframe

    文章目录 一 创建Dataframe 1 创建空dataframe 2 从list 创建dataframe 把list当做一列 把list当做一行 3 从 dict key value 创建dataframe 4 从 CSV 创建dataf
  • 布局数据存储,中国电子云意在何为?

    数据存储市场的未来在哪里 答案毋庸置疑是 云端 著名咨询机构Wikibon曾经做过一项统计 将全球三大云服务商的数据存储营收与传统存储厂商的营收进行对比 发现云服务商的数据存储业务规模已然赶上传统存储厂商 这揭示出一个不可阻挡的趋势 即随着
  • 线性回归算法(二)-- 最优解与损失函数

    介绍 要理解最优解和损失函数 我们需要先弄明白什么是误差 以简单线性回归为例 如下图所示 青色数据样本为真实值 y y y 直线上同一 x x x位置的红色样本点为预测值
  • qt操作第三方软件

    QT控制第三方软件方法 背景需求 实现思路 获取句柄方法 QT通过获取的信息操作 例子 控件ID为0或者控件ID和操作句柄相同怎么办 得到窗体x y height width 模拟键盘鼠标操作 附录 键值对照表 背景需求 通过前辈们写的软体
  • Shell--基础--06--传递参数

    Shell 基础 06 传递参数 1 介绍 我们可以在执行 Shell 脚本时 向脚本传递参数 1 1 脚本内获取参数的格式 格式为 n n 代表一个数字 0 执行的文件名 1 为执行脚本的第一个参数 2 为执行脚本的第二个参数 以此类推
  • AI时代,重新理解阿里云

    如果说 在数字化时代 阿里云给外界的标签是基于算力 数据等要素的基建角色 那么 在如今的智能化时代 基于自身强大的云计算能力和长期以往的AI技术积累 它的这种底座底色显然再一次被夯实 彰显 作者 皮爷 出品 产业家 宜昌城东大道 左侧是中国
  • DirectX编程:利用 DirectSound 录音

    DirectX编程 利用 DirectSound 录音 转载 http www cnblogs com stg609 archive 2008 10 24 1318931 html 花了一阵子 把DirectX安装后自带的帮助文件中的那部分
  • ES时间分组统计查询

    创建索引 PUT test 索引结构 PUT test mapping properties insertTime type date id type text fields keyword type keyword ignore abov
  • halcon之Blob分析实战

    Blob分析 Blob Analysis 在计算机视觉中的Blob是指图像中的具有相似颜色 纹理等特征所组成的一块连通区域 Blob分析 Blob Analysis 是对图像中相同像素的连通域进行分析 该连通域称为Blob 其过程其实就是将
  • 【数据结构】栈

    文章目录 1 栈的概念及结构 2 栈的实现 2 1栈的实现思路 2 2概念理解题 2 3栈的结构体定义 2 4函数接口 功能 2 5头文件Stack h 2 6函数实现Stack c 2 7测试函数Test c 2 8有效的括号 利用栈实现
  • Oracl之动态Sql编写总结

    一 概述 在通常的sql操作中 sql语句基本上都是固定的 如 SELECT t empno t ename FROM scott emp t WHERE t deptno 20 但有的时候 从应用的需要或程序的编写出发 都可能需要用到动态
  • 【抽样技术】CH2 简单随机抽样补充——比率估计与回归估计

    目录 一 概述 1 问题的提出 2 比率估计与回归估计的作用和使用条件 3 辅助变量的特点 4 相关符号 二 比率估计量 编辑 编辑 1 问题的提出 2 定义 3 比估计与简单估计的比较 4 比率估计的思想 5 比率估计量及其性质 1 引理
  • 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

    import java util Arrays 问题 顺时针螺旋输出数组 题目特征 保持一种模式前进 遇到一定条件转换另一种模式前进 思路 用一个二维数组来不同取值来控制前进 设置变动的边界为改变的条件 public class Test1

随机推荐

  • [1160]ModuleNotFoundError: No module named setuptools_rust

    报错信息 Traceback most recent call last File line 1 in File tmp pip build my9sai1o cryptography setup py line 14 in from se
  • 复现iis 文件解析漏洞

    1 开启IIS服务 开始 管理工具 Internet信息服务 IIS 管理器 2 点击Internet信息服务 IIS 管理器 查看自己web网站中的文件和IIS服务的开始 停止 暂停按钮 查看IIS服务是否开启 若未开启请开启 HLY 本
  • 如何查看某个端口被占用

    查看8080端口是否被占用可以使用如下命令 Windows netstat ano find 8080 Linux netstat ano grep 8080 netstat命令详解 Netstat用于显示与IP TCP UDP和ICMP协
  • IPFS: NAT traversal(NAT穿越)

    IPFS是一个p2p网络 那么一定绕不开的一个问题就是NAT穿越 之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架 本文简单介绍一下什么是NAT 为什么有NAT技术 NAT主要用来缓解全球的IPv4地址不够用的情况 IP
  • springboot整合rabbitMq(未完成)

    1 下载安装如下软件 erlang语言和rabbitmq服务 2 配置环境变量 erl安装目录 bin rabbit安装目录 sbin 3 安装插件 打开cmd窗口 进入sbin的cmd窗口 输入rabbitmq plugins enabl
  • python3 学习笔记(三):函数与模块

    python3 学习笔记 python 优雅 明确 简单 函数与模块 1 函数 组织好的 可重复使用的 用来实现某一功能的代码段 1 定义 def function x pass 其中 def为关键字 function 为函数名 x为形参
  • C语言基础知识--weak关键字

    目录 一 C语言弱函数定义 weak关键字 1 weak关键字简介 2 weak关键字使用示例 二 总结 一 C语言弱函数定义 weak关键字 1 weak关键字简介 使用 attribute weak 修饰函数 告诉编译器此函数为同名函数
  • 修改服务器404页面,Apache服务器404页面设置具体步骤

    在网站运营过程中 由于某些原因有时候要对网页进行删除 也就意味以后用户或者用户访问删除页面都是访问不了的 如果用户和搜索引擎访问错误页面返回值不是404的话 那么就很不友好 大大增加跳出率 404页面就是引导用户从错误的页面访问到正确的页面
  • 经典算法题收集一

    1 题目一 有 n个人围成一圈 顺序排号 从第一个人开始报数 从 1 到 3 报数 凡报到 3 的人退出圈子 问最后留下的是原来第几号的那位 其实这是一个约瑟夫环问题 这个问题最本质其实就是循环链表的问题 围成一个圈之后 报数即是循环链表的
  • Oracle小数连接字符串时开头的0不见的问题

    小数在连接成字符串的时候 如果小数的开头是0 几的话 前面的 0 会被省略掉 在excel中也有这个特点 具体是为什么不清楚 如 select 0 8 from dual 结果 8 可以用下面的方式避免 防止导致查询到的最终结果不合适 se
  • leetcode分类刷题:基于数组的双指针(四、小的移动)

    leetcode上有些题是真的太难了 正常读题之后完全想不到要用双指针来求解 本次博客总结的题目是双指针初始时位于数组两端 哪个元素小就移动哪个指针 11 盛最多水的容器 1 这道题放在42 接雨水的相似题目里 可能是因为它们都有相似的双指
  • Android 10.0系统启动之init进程-[Android取经之路]

    原文链接 https blog csdn net yiranfeng article details 103549394 摘要 init进程是linux系统中用户空间的第一个进程 进程号为1 当bootloader启动后 启动kernel
  • CTFshow 击剑杯 部分WP

    摆烂了摆烂了 太难了 聪明的师傅已经组队打起月赛了 试试能不能苟住前5 苟住了 复现的后面再补充吧 文章目录 1 Misc 中文识别带师 2 Web 简单的验证码 easyPOP 3 Pwn pwn01 My sword is ready
  • FOX算法的MPI实现

    算法描述如下 将待相乘的矩阵A和B分成p个方块Ai j和Bi j 0 j i p 1 每块大小为 n p n p 并将他们分配给 p p 个处理器 开始时处理器Pi j存放有Ai j和Bi j 并负责计算块Ci j 然后Fox算法执行以下
  • 离线强化学习(Offline RL)系列7: (状态处理) OfflineRL中的状态空间的数据增强(7种增强方案)

    Arxiv原文 S4RL Surprisingly Simple Self Supervision for Offline Reinforcement Learning in Robotics 本文是由多伦多大学 斯坦福大学和Nvidia三
  • elementUI组件修改样式 覆盖无效

    在我们使用第三方UI组件库开发时有时需要对这些组件进行一些样式修改 为了vue页面样式模块化 不对全局样式造成污染 我们往往都会加入scoped属性用来限制样式的作用域 然而这也会导致当我们修改部分ui组件样式失效 为了避免这种情况 我们常
  • 区块链系统:什么是私钥?

    在比特币中 私钥本质上就是一个256位的随机整数 我们以JavaScript为例 演示如何创建比特币私钥 在JavaScript中 内置的Number类型使用56位表示整数和浮点数 最大可表示的整数最大只有9007199254740991
  • 经典C语言面试题1:malloc 和 new的区别?

    malloc free是 C C语言的标准库函数 而new delete是C 的运算符 malloc内存分配成功返回的类型为void 需要通过强制类型转换将void 转换为我们需要的类型 new内存分配失败时会抛出bac alloc异常 不
  • 51单片机开发:通过74HC595控制LED点阵

    1 LED点阵介绍 1 LED点阵就是多个LED发光二极管的集合 在单个LED的发光原理上没有任何区别 2 上面是16x16的LED点阵 总共有16x16 256个LED灯 由32个引脚来控制 其中16个引脚是正极 posn n 1 2 1
  • 数据结构:JAVA 顺序表

    今天介绍的是java里面的顺序表 目录 1 新建一个类并且初始化几个变量 2 display方法 展示数组 3 add方法 添加新元素 4 contains 查询需要找的元素在不在数组中 indexOf 找到这个元素 5 get和set 获