数据结构:数组

文章目录

  • 数组
    • 一,概述
    • 二,添加数据
    • 三,删除数据


数组

一,概述

数组是一种线性表数据结构,它用一组连续的内存空间来存储一组具有相同类型的数据。

数组可以被视为一块连续的内存,即使物理上不连续,逻辑上也是连续的,它存储着一组相同类型的数据元素。每个元素都有一个唯一确定的下标,用于区分和访问。数组的下标从0开始,逐个递增。

数组具有以下特点:

  1. 连续的内存空间:数组使用一块连续的内存空间来存储数据,这使得我们可以快速、直接地访问任何元素,而无需进行额外的计算或寻址操作。
  2. 相同类型的数据:数组中的所有元素必须是同一类型的数据,这使得数组在内存中占据的空间是连续的,并且可以快速地批量处理数组中的元素。
  3. 随机访问:通过下标,我们可以随机访问数组中的任何一个元素,无需知道该元素在数组中的位置或距离其他元素的位置。

数组的优点包括:

  1. 随机访问:由于数组是连续的内存空间,我们可以通过下标直接访问数组中的任何一个元素,无需进行额外的计算或寻址操作。
  2. 易于理解和使用:数组的概念相对简单,易于理解和使用。

然而,数组也有一些缺点:

  1. 删除和插入效率低:如果要删除或插入数组中的某个元素,需要移动大量元素以保持数组的连续性,这会导致效率低下。
  2. 长度固定:一旦创建了数组,其长度就不能更改,除非重新创建一个新的数组。

总的来说,数组是一种基础且常用的数据结构,它在编程中有着广泛的应用。

简介

  • 数组是一种线性数据结构,可以容纳多个相同类型的元素。
  • 数组中的每个元素都具有一个唯一的索引,用于访问该元素。
  • 数组的大小在创建时确定,并且不能在运行时更改。

图示

    +-----+-----+-----+-----+|  0  |  1  |  2  |  3  |+-----+-----+-----+-----+|  4  |  5  |  6  |  7  |+-----+-----+-----+-----+|  8  |  9  | 10  | 11  |+-----+-----+-----+-----+

上述图示表示一个包含12个元素的整数数组。每个元素都有一个唯一的索引,从0开始递增。

示例

以下是一个简单的Java代码示例,展示如何创建和使用整数数组:

public class ArrayExample {public static void main(String[] args) {// 创建一个包含5个元素的整数数组int[] numbers = new int[5];// 通过索引访问和修改数组元素numbers[0] = 10;numbers[1] = 20;numbers[2] = 30;numbers[3] = 40;numbers[4] = 50;// 打印数组中的元素for (int i = 0; i < numbers.length; i++) {System.out.println("Element at index " + i + " : " + numbers[i]);}}
}

在上述示例中,创建了一个包含5个元素的整数数组numbers。通过使用索引,可以访问和修改数组中的元素。最后,使用循环遍历数组并打印每个元素和其对应的索引。

二,添加数据

在Java中,数组是一种常见的数据结构,用于存储固定大小的相同类型的元素。但是,数组的大小在创建时确定,因此不能直接添加(或删除)元素。如果需要动态添加元素的能力,可能需要使用其他数据结构,如ArrayList(动态数组),LinkedList(链表),HashSet(集合)等。

以下是使用ArrayList的一个例子:

import java.util.ArrayList; // 导入ArrayList类public class Main {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>(); // 创建一个空的ArrayListlist.add("数据1"); // 添加元素"数据1"list.add("数据2"); // 添加元素"数据2"list.add("数据3"); // 添加元素"数据3"System.out.println(list); // 打印出整个ArrayList}
}

这段代码首先创建了一个空的ArrayList,然后添加了三个元素到ArrayList中,最后打印出整个ArrayList。运行这段代码,会在控制台看到输出:[数据1, 数据2, 数据3]

注意:虽然ArrayList提供了添加和删除元素的能力,但它仍然是基于数组实现的,因此在某些情况下,如添加或删除大量元素,其性能可能不如其他数据结构(如LinkedList)那么好。

三,删除数据

在Java中,数组是一种固定大小的数据结构,一旦创建,其大小就不能改变。这意味着你不能直接从数组中删除元素。如果需要一种可以动态添加和删除元素的数据结构,可能需要使用ArrayList,LinkedList或HashSet等。

这里有一个ArrayList的删除元素示例:

import java.util.ArrayList;public class Main {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>(); list.add("数据1"); list.add("数据2"); list.add("数据3"); System.out.println("原始列表: " + list);// 删除元素"数据2"list.remove("数据2");System.out.println("删除后的列表: " + list);}
}

这段代码首先创建了一个包含三个元素的ArrayList。然后它调用remove方法删除元素"数据2"。最后,它打印出修改后的列表。运行这段代码,会在控制台看到输出:

原始列表: [数据1, 数据2, 数据3]
删除后的列表: [数据1, 数据3]

注意:remove方法只会删除第一个匹配的元素。如果你想要删除所有匹配的元素,你可以使用removeAll方法。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务保护-授权规则

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

lighttpd以及socket和WebSocket编程

综述 本文涉及到下图绿色背景部分的内容&#xff1a; 左侧位于Linux下&#xff0c;其中包括lighttpd和socket程序&#xff1b;右侧是WebSocket程序。两者通过网络交互。 本文介绍lighttpd的基本使用方式&#xff0c;并通过编程完成一个socket服务器与浏览器端的WebSocket客户…

本地docker注册证书docker login连接到harbor仓库、利用shell脚本将大量镜像pull、tag、push到私有harbor仓库

1. 本地docker注册证书docker login连接到harbor仓库&#xff1a; 我们使用docker login/push/pull去与Harbor打交道&#xff0c;上传下载镜像等。 但是可能会出现x509: certificate signed by unknown authority之类的错误。 [roottest01 harbor.dev]# docker login harbor.d…

递归算法实现二分查找c++

递归算法可以用来实现二分查找。二分查找是一种高效的搜索算法&#xff0c;适用于已排序的数组。下面是使用递归算法实现二分查找的示例代码&#xff1a; #include <iostream> using namespace std;// 递归二分查找函数 int binarySearch(int arr[], int low, int high,…

数学建模__动态规划

动态规划就是&#xff0c;将任务每一步均记录下来&#xff0c;以便将来重复使用时能够直接调用 问题描述&#xff1a;给定n个物品&#xff0c;每个物品的重量是Wi,价值是Vi&#xff0c;但是背包最多能装下capacity重量的物品&#xff0c;问我们如何选择才能利益最大化。 这里涉…

Oracle的 dblink 学习笔记

文章目录 一、基础环境二、适用场景三、过程和方法四、参考资料 版权声明&#xff1a;本文为CSDN博主「杨群」的原创文章&#xff0c;遵循 CC 4.0 BY-SA版权协议&#xff0c;于2023年9月10日首发于CSDN&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;http…

Python | 根据子列表中的第二个元素对列表进行排序

在本文中&#xff0c;我们将学习如何根据主列表中存在的子列表的第二个元素对任何列表进行排序。 比如 Input : [[‘rishav’, 10], [‘akash’, 5], [‘ram’, 20], [‘gaurav’, 15]] Output : [[‘akash’, 5], [‘rishav’, 10], [‘gaurav’, 15], [‘ram’, 20]] Input …

信息化发展47

需求分析 1 、软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。 2 、根据IEEE 的软件工程标准词汇表&#xff0c; 软件需求是指用户解决问题或达到目标所需的条件或能力&#xff0c; 是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的…

Spring Framework介绍

什么是Spring Framework&#xff1f; Spring Framework 是一个开源的、轻量级的应用程序开发框架&#xff0c;它提供了一系列的解决方案&#xff0c;用于构建企业级Java应用程序。Spring Framework基于IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;和…

C#开发的OpenRA游戏之调试菜单1

C#开发的OpenRA游戏之调试菜单1 在开发一个游戏里,经常需要提供一些调试设置,以便快速地达到需要测试的阶段,否则按正常游戏的进程,就会需要比较久的时间,这样浪费开发人员的时间。 在OpenRA提供一个调试菜单,它就是在下面的界面里: 这个菜单叫做 Debug Menu,当玩家点…

抽象类和接口

目录 抽象类 接口 基本概念 多接口使用 为什么接口解决了Java的多继承问题&#xff1f; 接口的继承 克隆 Clonable接口 拷贝 Object类 抽象类 1.使用abstract修饰的方法称为抽象方法 2.使用abstract修饰的类称为抽象类 3.抽象类不可以被实例化 e.g.Shape shape ne…

ARMv7系统寄存器

本文档介绍 NEON 和 VFP 的系统寄存器,他们用于描述 NEON 和 VFP 的系统架构。包括:FPSCR, FPEXC, FPSID,MVFR0/1. 常见的术语 CPSR(Current Program Status Register)是 ARM 处理器中的一个寄存器,用于存储当前程序的状态信息。它包含了一些标志位,用于记录程序的运…

用户权限数据转换为用户组列表(3/3) - Excel PY公式

最近Excel圈里的大事情就是微软把PY塞进了Excel单元格&#xff0c;可以作为公式使用&#xff0c;轻松用PY做数据分析。系好安全带&#xff0c;老司机带你玩一把。 实例需求&#xff1a;如下是AD用户的列表,每个用户拥有该应用程序的只读或读写权限&#xff0c;现在需要创建新的…

QT之QLineEdit简介

QT之QLineEdit简介 QLineEdit 是 Qt 的一个类&#xff0c;用于创建和管理单行的文本输入框。以下是一些常用的 QLineEdit 函数和它们的用法&#xff1a; 1&#xff09;QLineEdit(QWidget *parent nullptr) 构造函数&#xff0c;创建一个新的 QLineEdit 对象。parent 参数是指…

【CSS】font-weight设置为500显示不出加粗效果

问题出在操作系统上&#xff1a; macOS 系统默认的华文黑体(STHeiti) 有七个矢量级别&#xff1a;Heavy/Bold/MediumP4/Regular/Thin/Light/UltraLightP2 &#xff0c;它包含上面 CSS 中设定的 500 这个精度。 Windows 系统默认的宋体(simsun) 没有那么多级别。在缺少级别支持…

23、mysql数据库的安装

&#xff08;无图&#xff0c;简易版本&#xff09; 一、下载 点开下面的链接&#xff1a;https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了 二、解压 下载完成后我们得到的是一个压缩包&#xff0c;将其解压&#xff0c;我们就可以得到MyS…

李开复:我家的AI是坠吼的

创新工场董事长、鸿海独立董事李开复&#xff0c;近日出席鸿海股东会暨媒体记者会时表示&#xff0c;人工智能&#xff08;AI&#xff09;是人类史上即将面临的最伟大技术革命&#xff0c;未来十年的改变将改写人类历史、重构所有产业&#xff0c;其发展大致可分三阶段&#xf…

Java 复习笔记 - 常见算法:排序算法

文章目录 概述一&#xff0c;冒泡排序&#xff08;一&#xff09;排序概述&#xff08;二&#xff09;排序原理&#xff08;三&#xff09;示例 二&#xff0c;选择排序&#xff08;一&#xff09;排序概述&#xff08;二&#xff09;排序原理&#xff08;三&#xff09;示例 三…

微服务保护-隔离

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

Linux学习第11天:字符设备驱动开发:一字一符总见情

本文是驱动开发的第一篇笔记。主要内容是字符设备驱动开发最基础的内容&#xff0c;主要包括字符设备的概念、开发步骤以及一个十分重要的概念&#xff1a;设备号。其思维导图能简单的显示本文的基本框架&#xff0c;如下&#xff1a; 一、字符设备 字符设备就是一个一个字节&a…