Java实现数据结构---数组

文章目录

  • 概念
  • 存储原理
  • 数组的操作
  • 完整代码

概念

数组是(Array)是有限个相同类型的变量所组成的有序集合,数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。
在这里插入图片描述
数组下标从开始。

存储原理

数组用一组连续的内存空间来存储一组具有相同类型的数据。
在这里插入图片描述
注: 灰色格子–被使用的内存; 橙色格子–空闲的内存; 红色格子–数组暂用的内存。

数组的操作

  1. 数组演示类:
package com.xxliao.datastructure.linerar_list.array;

import javax.sql.XADataSource;
/**
 1. @author xxliao
 2. @description: 数据结构 - 线性表 - array
 3.  数组是(Array)是 有限个相同类型 的变量所组成的 有序 集合,数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。

 数组是用一组 连续的内存空间 来存储一组具有 相同类型 的数据。
 4.  5. @date 2024/5/27 22:50
 */
public class Array {

    // 定义数组
    int[] array = new int[10];

    // 定义计数器
    int count = 0;

    // 初始化,填充0-4空间的值
    public Array() {
        array[0] = 3;
        array[1] = 1;
        array[2] = 2;
        array[3] = 5;
        array[4] = 4;
        count = 5;
    }

    /**
     * @description  根据索引获取元组的值
     * @author  xxliao
     * @date  2024/5/28 11:35
     */
    public int get(int index) {
        return array[index];
    }

    /**
     * @description  修改元素
      index: 索引
      value: 值
     * @author  xxliao
     * @date  2024/5/28 11:36
     */
    public void update(int index, int value) {
        array[index] = value;
    }

    /**
     * @description  从数组尾部添加
     * @author  xxliao
     * @date  2024/5/28 11:38
     */
    public void insertTail(int value) {
        if(count >= array.length) { //判断是否扩容
            resize();
        }
        array[count++] = value;
    }

    /**
     * @description  从中间添加
     * @author  xxliao
     * @date  2024/5/28 11:42
     */
    public void insertMiddle(int index, int value) {
        if(count >= array.length) { // 判断是否扩容
            resize();
        }
        for (int i = array.length-1; i >= index; i--) {
            // 从尾部开始遍历,看是否有值,有值就移动。
            if (array[i] != 0) {
                array[i+1]=array[i];
            }
        }
        array[index]=value;
        count++;
    }

    /**
     * @description  扩容,增加一倍空间
     * @author  xxliao
     * @date  2024/5/28 11:45
     */
    public void resize(){
        int[] numsNew=new int[array.length*2];
        System.arraycopy(array,0,numsNew,0,array.length);
        array=numsNew;
    }

    /**
     * @description  删除元素,并移动
     * @author  xxliao
     * @date  2024/5/28 11:47
     */
    public void deleteMiddle(int index){
        for(int i=index+1;i<array.length;i++){
            array[i-1] = array[i];
        }
        count--;
    }

    /**
     * @description  遍历数组
     * @author  xxliao
     * @date  2024/5/28 11:48
     */
    public void display() {
        for (int value : array) {
            System.out.print(value+" ");
        }
        System.out.println("=====================");
    }

    /**
     * @description  遍历数组
     * @author  xxliao
     * @date  2024/5/28 11:48
     */
    public void display2() {
        for (int i = array.length - 1; i >= 0; i--) {
            System.out.print(array[i]+" ");
        }
        System.out.println("=====================");
    }
}
  1. 测试类
package com.xxliao.datastructure.linerar_list.array;

/**
 1. @author xxliao
 2. @description: array test client
 3. @date 2024/5/28 11:33
 */
public class TestClient {

    public static void main(String[] args) {
        Array array = new Array();
        array.display();

        // 测试尾部添加
        // for (int i = 0; i < 10; i++) {
        //   array.insertTail(i);
        // }

        // 测试中间添加
        array.insertMiddle(1,1000);

        // 测试删除
        //array.deleteMiddle(3);

        array.display();
    }
}
  1. 输出结构

数组尾部添加:
在这里插入图片描述

数组中间添加:
在这里插入图片描述
数组删除:
在这里插入图片描述

完整代码

https://github.com/xxliao100/datastructure_algorithms.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/664847.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯第17135题 不完整的算式 C++ Java Python

目录 题目 思路和解题方法 步骤 1&#xff1a;识别缺失的部分 步骤 2&#xff1a;根据已知条件计算或推断 步骤 3&#xff1a;处理特殊情况和验证 c 代码 Java 版本 Python 版本&#xff08;仅供参考&#xff09; 代码和解题细节&#xff1a; 题目 题目链接&#xff…

STM32自己从零开始实操03:输出部分原理图

一、继电器电路 1.1指路 延续使用 JZC-33F-012-ZS3 继电器&#xff0c;设计出以小电流撬动大电流的继电器电路。 &#xff08;提示&#xff09;电路需要包含&#xff1a;三极管开关电路、续流二极管、滤波电容、指示灯、输出部分。 1.2数据手册重要信息提炼 联系排列&…

神经网络与深度学习——第3章 线性模型

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第3章 线性模型 线性模型 线性模型&#xff08;Linear Model&#xff09;是机器学习中应用最广泛的模型&#xff0c;指通过样本特征的线性组合来进行预测的模型&#xff0c;给定一个 D D D维样本 x [ x …

解锁 GPT-4o 背后数据带来的情绪价值

GPT-4o 可以说已经是一个富有情感、通人性的智能语音助手&#xff0c;或者更准确地说&#xff0c;是一个越来越接近人类交互的 “新物种”。这个强大的模型同时具备文本、图片、视频和语音理解和合成方面的能力&#xff0c;甚至可以被视为 GPT-5 的一个未完成版。 01 富有情感的…

lipo制作通用版本静态库

文章目录 目的了解多架构的maclipo如何利用lipo编译通用版本静态库lipo 命令整理扩展目的 主要是使用lipo命令在macOS上创建通用版本的静态库(.a文件),来支持多种架构,如arm64,x86_64。 学习目的: 了解mac 不同架构arm64, x86_64了解lipo命令了解多架构的mac 随着appl…

Linux - 文件管理高级1

0.管道 | 将前面命令的标准输出传递给管道作为后面的标准输入 1.文件查找 find find 进行文件查找时&#xff0c;默认进行递归查找&#xff0c;会查找隐藏目录下的文件 1.1 用法 # find 查找路径 查找条件... -type // 文件类型 f 普通文件 b 设备 d …

数据目录用处如此之大?四个步骤教你构建数据目录

在数字化浪潮的推动下&#xff0c;数据已成为企业决策的核心。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;如何高效地管理和利用这些宝贵的数据资产&#xff0c;成为了一个日益严峻的挑战。企业需要一个强大的工具来组织、索引和解释其数据&#xff0c;以便快速发现和…

代理IP怎么检测?如何判断IP好坏?

当我们的数字足迹无处不在&#xff0c;隐私保护显得愈发重要。而代理IP就像是我们的隐身斗篷&#xff0c;让我们在各项网络业务中更加顺畅。 我们常常看到别人购买了代理IP服务后&#xff0c;用在线检测网站检查IP&#xff0c;相当于一个”售前检验““售后质检”的作用。但是…

图书管理系统——Java实现

文章目录 Java实现图书管理系统问题分析框架搭建业务实现项目测试代码演示BookioperationUserMain&#xff08;默认包&#xff09; Java实现图书管理系统 学习了前六篇的SE语法&#xff0c;我们现在要用它们实现一个简单的图书管理系统项目&#xff0c;深入了解各个知识点的应…

【CH32V305FBP6】4. systick 配置

配置 main.c void SYSTICK_Init_Config(u_int64_t ticks) {SysTick->SR & ~(1 << 0);//clear State flagSysTick->CMP ticks - 1;SysTick->CNT 0;SysTick->CTLR 0xF;NVIC_SetPriority(SysTicK_IRQn, 15);NVIC_EnableIRQ(SysTicK_IRQn); }中断计数 …

算法-扫描线

目录 什么是扫描线算法&#xff1f; 扫描线简单应用 更多的扫描线 什么是扫描线算法&#xff1f; 在计算几何中&#xff0c;扫描线算法&#xff08;scan line algorithm&#xff09;一般用来解决几何图形的面积交并&#xff0c;周长交并问题&#xff0c;扫描线算法的核心思想…

Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

Leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串 给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串&#xff0c;请返回 true &#xff0c;否则请返回 false 。 截取每个长度为 k 的字符串&#xff0c;加入 Set 中&#x…

wpf listbox实现选中动画

效果如下&#xff1a; 参考&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers/blob/master/src/WPFDevelopers.Samples.Shared/Controls/NavigateMenu/NavigateMenu.xaml 实现上述效果的前台代码&#xff1a; <Windowx:Class"ListBox.MainWindow"…

数据隐私新篇章:Facebook如何保护用户信息

随着数字化时代的到来&#xff0c;数据隐私保护成为了社交媒体平台和用户共同关注的焦点。作为全球最大的社交网络之一&#xff0c;Facebook一直致力于保护用户的隐私和数据安全。本文将深入探讨Facebook在数据隐私保护方面的措施和实践&#xff0c;以及其如何开启数据隐私的新…

C++系列-类模板

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 类模板的定义格式&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; template<class T> class Stack { public:Stack(size_…

u盘文件保密的方法有哪些?关于U盘的使用你要知道这些!

U盘作为便携式的存储设备&#xff0c;被广泛应用于日常工作和生活中。 然而&#xff0c;U盘的丢失或被盗可能导致敏感数据泄露&#xff0c;因此&#xff0c;掌握U盘文件保密的方法至关重要。 本文将介绍几种有效的U盘文件保密方法&#xff0c;并分享关于U盘使用的关键知识&…

BioVendor—Surfactant Protein D Human ELISA

人表面活性剂蛋白D是糖蛋白和钙依赖凝集素胶原亚家族的一员。SP-D是一种同源三聚体蛋白&#xff0c;由三个43kDa单元组成&#xff0c;这些单元在它们的中间结合。大多数SP-D主要含有十二聚体(四个三聚体亚单位)&#xff0c;但也观察到更高的多聚体。每个单元由至少四个离散的结…

旧衣回收小程序带来的收益优势,小程序有哪些功能?

随着互联网的快速发展&#xff0c;大众对旧衣回收市场也越来越了解&#xff0c;对于闲置的旧衣物也有了适合的处理方式。旧衣回收也符合了当下资源回收利用&#xff0c;因此&#xff0c;旧衣回收市场获得了爆发式增长&#xff0c;市场规模不断扩大。同时市场中还吸引了越来越多…

记录岁月云明细账excel导出的性能优化

财务软件报表还是非常麻烦&#xff0c;因为使用excel最好的就是财务&#xff0c;但是通过java导出excel&#xff0c;使用easyexcel不用报表工具&#xff0c;不是这么容易。采用jprofile对一个导出操作进行监控&#xff0c;其中一家零售企业导出当月全部明细账&#xff0c;检测到…

MySQL数据库--从创建数据库到删库跑路

目录 MySQL安装: 1. 数据库基本操作1.1 创建数据库1.2 显示当前数据库1.3 删除数据库1.4 使用数据库/选中数据库 2. SQL中的数据类型2.1 数值类型2.2 字符串类型2.3 时间类型 3. 表的操作3.2 创建表3.1 显示数据库中的表3.3 查看表的详细情况3.4 删除表3.5 注释3. 修改列(了解即…