创建数组(数组基本方法)

组相同类型数据的集合
java中数组特点:
1.数组在内存中是连续分配的
2.在创建数组时,要指明数组的长度
3.访问数组,通过索引,从0开始,到数组长度-1

功能:
1.插入:向索引位置插入一个元素,后面的元素往后平移,由此还可以引申出头部添加元素,尾部添加元素两个功能


2.删除:删除某个索引的元素,并把后面的元素整体前移,由此还可以引申出删除头部元素,删除尾部元素


3.获取:获取数组实际长度,获取数组容量,获取数组索引对应的值,获取由值对应的索引


4.判断:判断数组是否为空,判断是否含有某个元素


5.修改:修改索引位置的值


6.toString:重写toString方法,把数组中的元素转换成String类型便于显示出

package com.algo.lesson02;import java.util.Random;public class MyArr<T> {private  T[] data;//保存数据int size;//数组中实际存放元素的个数int capacity;//容积public MyArr(int capacity){if(capacity<=0){this.capacity=10;}else{this.capacity=capacity;}this.size=0;this.data=(T[])(new Object[this.capacity]);}//获取数组中实际存放元素的个数public int getSize(){return  size;}//获取空间大小public int getCapacity(){return capacity;}//判断数组是否为空public boolean isEmpty(){return size==0;}//像数组中添加元素尾插法public void add(T item){insert(size, item);}//头插法public void addByHead(T item){insert(0, item);}//插入元素public void insert(int index,T value){//入参判断if(index<0||index>this.size){throw new IllegalArgumentException("index is invaild");}size++;if(capacity<=size){addSize(2*size);}for (int i = size; i > index; i--) {data[i]=data[i-1];}this.data[index]=value;}//扩容public void addSize(int newCapacity){T[] newData=(T[])(new Object[newCapacity]);for (int i = 0; i < size; i++) {newData[i]=data[i];}//改变容器this.data=newData;capacity=newCapacity;}//向数组中插入public void modifyValueByIndex(int index,T value){//入参判断if(index<0||index>this.size){throw new IllegalArgumentException("index is invaild");}this.data[index]=value;}//获取指定位置的值public T getValueByIndex(int index){if(index<0||index>=this.size){throw new IllegalArgumentException("index is invaild");}return this.data[index];}//判断是否含有值public int containsValue(T val){for(int i=0;i<this.size;i++){if(val.equals(data[i])){return i;}}return-1;}//根据索引删除从数组中删除元素,返回删除的元素数据public T removeByIndex(int index){if(index<0||index>=this.size){return null;}//找到需要删除的元素的位置T devalue=this.data[index];for(int i=index;i<size;i++){data[i]=data[i+1];}size--;if (size<=capacity/4&&capacity/2>0){addSize(capacity/2);}return devalue;}public T removeFromLast(){return removeByIndex(this.size - 1);}//获取数组中最后一个元素public T getLastValue(){return getValueByIndex(this.size-1);}//输出重写toString方法@Overridepublic String toString() {StringBuffer stringBuffer=new StringBuffer("{");for (int i = 0; i < size; i++) {stringBuffer.append(data[i]);if(i<size-1){stringBuffer.append(",");}}stringBuffer.append("}");return stringBuffer.toString();}//是否包含某元素public boolean contain(T data){for (int i = 0; i < this.size; i++) {if(data==this.value[i]){return true;}}return false;}}
泛型:

我们的数组不仅是能存放int类型,当传参传入什么类型时,就应该保存什么类型,所以我们需要用到泛型

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

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

相关文章

Gitee Reward让开源作者不再为爱发电

一、什么是Gitee Reward&#xff1f; Gitee Reward是Gitee为改善开源开发生命周期提出的新策略。开源项目的支持者们可以更轻松地为其喜爱的项目提供资金&#xff0c;贡献者们也可以因为其不懈的开源贡献得到奖励。 二、Gitee Reward上允许哪些类型的项目&#xff1f; 允许任…

stable diffuison的安装和使用

stable diffuison的安装和使用 简单介绍 Stable Diffusion是一个深度学习文本到图像的生成模型&#xff0c;它可以根据文本描述生成详细的图像。这个模型主要应用于文本生成图像的场景中&#xff0c;通过给定的文本提示词&#xff0c;模型会输出一张与提示词相匹配的图片。 S…

Cadence——布局部分相关教程

本文章基于【凡亿】Cadence Allegro 17.4零基础入门66讲PCB Layout设计实战加个人理解写出 &#xff08;一&#xff09;中英文切换 注意&#xff1a;只是将选项卡部分切换中文 1&#xff0c;设置中文 a,打开PCB Editor 17.4以后&#xff0c;点击Help和About b,可以看到与下…

服务器或服务器主板中的BIOS更新详解

BIOS更新总共有三种方式&#xff1a;DOS、UEFI Shell以及BMC网页更新&#xff0c;而其中&#xff0c;DOS与Shell的更新方式类似&#xff0c;因此以下为统一描述。 一、UEFI Shell或DOS下更新 当我们下载了官网的BIOS更新包并解压后可以获得一些更新文件&#xff0c;在更新文件…

舞动微服务的安全舞伴:服务熔断与服务降级的精妙演绎

目录 引言 1、服务熔断&#xff1a;避免连锁反应的舞姿 1.1 什么是服务熔断&#xff1f; 1.2服务熔断的工作原理 场景&#xff1a;支付服务的重要性 1. 监控支付服务 2. 设定阈值 3. 熔断器状态 4. 触发熔断 5. 定时检测 6. 自动恢复 1.3解析 2、服务降级&#xf…

Python基础第七篇(Python的文件操作)

文章目录 一、文件编码二、文件的读取操作1.操作代码2.读出结果 三、文件的写出操作1.源代码2.读出结果 四、文件的追加操作1.源代码2.读出结果 这篇文章旨在深入浅出地介绍Python在文件操作上的能力&#xff0c;包括文件的编码、读取和写入等基本操作。内容丰富、易于理解&…

Homicide+Reports1980-2014连环凶案数据,CSV格式

这个数据集提供了关于谋杀案件的详细信息&#xff0c;包括涉及的机构、受害者和肇事者的信息&#xff0c;以及犯罪的其他细节。下面是每个字段的详细解释&#xff1a; Record ID: 记录的唯一标识符。Agency Code: 执行机构的代码。Agency Name: 执行机构的名称。Agency Type: …

公网环境调试本地配置的Java支付宝沙箱环境模拟支付场景

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境…

java SSM项目预算生成管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM项目预算生成管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的 源代码和数据库&#xff0c;系统主…

浅析Java虚拟机中的ZGC

引言 为什么需要垃圾回收&#xff08;Garbage Collection&#xff09; 垃圾回收是Java开发中的关键机制&#xff0c;负责自动管理内存&#xff0c;防止内存泄漏&#xff0c;提高开发效率和应用程序的稳定性。 Java中主要的垃圾回收方法 标记-清除算法&#xff08;Mark and …

盘点好用内容合规监测工具

网页敏感内容监测 Web Purify 由 WebPurify 提供&#xff0c;这是一个专门从事内容审核和过滤服务的公司。 核心功能 ● 文本审核&#xff1a;加强脏话过滤&#xff0c;标记仇恨言论、偏执、性挑逗等 ● 图片审核&#xff1a;让个人资料照片、社交应用程序、产品定制远离令…

python windows和linux 文件同步

在Python中&#xff0c;可以使用paramiko库来实现Windows和Linux之间的文件同步。paramiko是一个用于SSH连接的Python库&#xff0c;可以用于在Windows和Linux之间进行文件传输。 以下是一个简单的示例代码&#xff0c;演示如何使用paramiko库在Windows和Linux之间同步文件&am…

20.【TypeScript 教程】类型别名

TypeScript 类型别名 本节介绍的类型别名&#xff0c;就是通过关键字 type 给类型起个别名&#xff0c;类型别名较多应用于联合类型、交叉类型这种复合类型。 1. 解释 类型别名会给类型起个新名字。类型别名有时和接口很像&#xff0c;但是可以作用于原始值&#xff0c;联合类…

暴力破解常见的服务器

目录 使用 pydictor 生成自己的字典工具liunx下载使用常用的参数说明插件型字典 (可自己根据 API 文档开发) 使用 hydra 工具在线破解系统用户密码使用 hydra 破解 windows 7 远程桌面密码使用 hydra 工具破解 ssh 服务 root 用户密码 使用 Medusa 工具在线破解medusa参数说明M…

web搭建和nfs

一、web服务器搭建 1、基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# vim /etc/nginx/conf.d/openlab.conf server {listen…

jquery学习-1

jquery学习-1 1.jquery类似的框架 MooTools 对比反应时间2.Jquery Api jquery api中文文档 jquery注重的是看文档 3.Jquery下载和导入(压缩版) Jquery 下载 下载后导入项目中进行使用 <!DOCTYPE html> <html><head><meta charset"utf-8"…

Leetcode 3012. Minimize Length of Array Using Operations

Leetcode 3012. Minimize Length of Array Using Operations 1. 解题思路2. 代码实现 题目链接&#xff1a;3012. Minimize Length of Array Using Operations 1. 解题思路 这一题有一点数学题的意思&#xff0c;显然&#xff0c;根据最大公约数相关的知识&#xff0c;我们知…

埋点自动化测试框架设计

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 大数据时代&#xff0c;多数的web或app产品都会使用第三方或自己…

SpringCloud Alibaba 深入源码 - Nacos 分级存储模型、支撑百万服务注册压力、解决并发读写问题(CopyOnWrite)

目录 一、SpringCloudAlibaba 源码分析 1.1、SpringCloud & SpringCloudAlibaba 常用组件 1.2、Nacos的服务注册表结构是怎样的&#xff1f; 1.2.1、Nacos的分级存储模型&#xff08;理论层&#xff09; 1.2.2、Nacos 源码启动&#xff08;准备工作&#xff09; 1.2.…

HubSpot SEO功能好用吗?

HubSpot对于SEO&#xff08;搜索引擎优化&#xff09;提供了全面的工具和功能&#xff0c;帮助用户优化其网站以在搜索引擎中取得更好的排名。以下是关于HubSpot SEO的一些关键方面&#xff1a; 内容优化&#xff1a; HubSpot的内容工具允许用户创建并优化吸引人的内容。通过关…