在java中如何对数组实现添加、删除和插入操作呢?
我们知道,在C语言和java当中都是一种十分重要的数据结构,但是熟悉数组的朋友都知道,数组一旦被赋值就很难被轻易改动,相比之下人们往往更偏向另一种类似于数组当中但比数组更灵活的集合类型。但是,爱挑战的我。纵使数组在复制之后很难被改动,但是不意味着不能被改动,今天我就教大家如何对数组进行添加元素和删除元素操作以及插入元素操作。
打开eclipse我们新建一个类,加入main方法后声明一个数组,来(上代码)!
package ShuZu;
import java.util.Arrays;
public class Arry1 {
/*
* 如何增加数组中的元素
* 1)先创立一个新数组
* 2)将老数组的元素加进新数组里面
* 3)其余的元素自己家此处加一个9
*/
public static void main(String[] args) {
int[] arry = new int[] {6,7,8};
//创建一个新数组,其长度为老数组的加一
int[] newArry = new int[arry.length+1];
System.out.println("未添加之前的数组:"+Arrays.toString(arry));
int dst = 9;
for(int i =0;i<arry.length;i++) {
//将原数组加入到新数组当中
newArry[i]=arry[i];
}
//将目标元素加入到新数组当中
newArry[arry.length]=dst;//此处arry.lenth是新数组的最后后一个元素,为什么?第一个元素从零开始算起
//新数组替换原数组
arry=newArry;
//输出数组的值
System.out.println("添加之后的数组:"+Arrays.toString(arry));
}
}
执行结果如下:
对于对数组添加元素的操作当中,最核心的一部分就是新建一个空数组并且使该数组的长度为原数组长度加一,然后再将旧数组当中的元素一一复制到这个新数组当中然后再将目标元素添加进入数组即可也就是这个操作:newArry[arry.length]=dst;对于为什么该数组下标为Arry.length,那是因为数组的下标都是从零开始算,因此该数组最后一个值当然是原数组的长度了。当然笔者还在思考另一个问题: for(int i =0;i<arry.length;i++) {
//将原数组加入到新数组当中
newArry[i]=arry[i];
}在这段循环当中为什么i<arry.length而不是i<newArray.length呢?那是因为在该循环体当中进行赋值操作时newArray[i]=arry[i],当i=newArray.length时,arry[]是会出现越界操作。
接下来我们继续讲讲如何在原数组当中进行删除元素操作上代码:
package ShuZu;
import java.util.Arrays;
public class Arry2 {
public static void main(String[] args) {
int[] arry =new int[] {4,5,6,7,8};
System.out.println("删除之前的数组:"+Arrays.toString(arry));
//要删除的目标元素下标此处是在该数组的第2个位置进行删除
int index =2;
//新建一个数组
int[] newArry = new int[arry.length-1];
//弄一个循环,,将原数组符合条件的加进新数组当中
for(int i = 0;i<newArry.length;i++) {
if(i<index) {//在下标元素之前
newArry[i] =arry[i];
}else {//下标元素之后
newArry[i]=arry[i+1];
}
}
//新数组对老数组进行替换
arry = newArry;
//输出新数组
System.out.println("删除之后的数组:"+Arrays.toString(arry));
}
}
其运行结果如下:
仔细观察代码,我们会发现,删除元素的操作依旧是新建一个空数组并使它的长度为原数组减一。
然后进行筛选,将原数组当中符合条件的元素一一复制到新数组当中。
接下来是插入元素操作:
import java.util.Arrays;
public class array3 {
public static void main(String[] args) {
//建立一个数组,并进行赋值
int[] arry = new int[] {2,3,4,5,6};
System.out.println("插入之前的操作:"+Arrays.toString(arry));
int index=2;//设置下标索引值
int element = 9;//设置插入的值
//再创建一个新数组,并且将其长度设置为原数组的长度加一
int[] newArray = new int[arry.length+1];
for(int i =0;i<arry.length;i++) {
//接下来对原数组的元素进行筛选操作
if(i<index) {
newArray[i]=arry[i];
}else {
//当i=时,将其空出。之后的位置继续由原数组复制添加进来
newArray[i+1]=arry[i];
}
}
//将新数组下标为index的空元素进行填补。就是插入操作
newArray[index] = element;
//将原数组用新数组进行替换
arry = newArray;
System.out.println("笔者在3和4之间插入一个9");
System.out.println("插入后的数组:"+Arrays.toString(arry));//将数组转为字符串输出。
}
}
其运行结果如下:
仔细观察上述代码操作我们不难发现,在进行元素添加、删除和插入操作时。其核心思想都是新建一个空数组,然后将原数组当中符合条件的元素一一复制到新的数组当中。最后我想请大家思考一下,如果将上述操作用一个类封装起来并用面向对象的思想实现会是怎么样的呢?那么他们和集合有什么区别呢?
在java中如何对数组实现添加、删除和插入操作呢?相关推荐
- java 数组转化为arraylist_在Java中怎样把数组转换为ArrayList?
本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在Stack Overflow上做很多事情的权限.这跟我没什么关系,我们还是先看看这个问题吧. 这 ...
- Java中arraylist和数组的相互转换
Java中ArrayList和数组之间的相互转换 ArrayList转为数组 数组转为ArrayList 一.ArrayList转换数组 public static void arrayListToA ...
- Java中创建泛型数组
Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...
- Java中高效判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...
- java在数组中放入随机数_如何在Java中随机播放数组
java在数组中放入随机数 There are two ways to shuffle an array in Java. 有两种方法可以在Java中随机播放数组. Collections.shuff ...
- Java中如何将一个数组分割成多个等长度的数组
Java中如何将一个数组分割成多个等长度的数组,最后剩下的为一个素组 先看图 分析数据 提取公式 分装代码 1.如下我们需求 最近朋友android项目中有一个需求如下: 这一个长集合[item0, ...
- Java 中怎么打印数组?
分享一道经典Java面试题: Java 中怎么打印数组? 你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法来打印数组.由于数组没有实现 toSt ...
- Java中如何实现数组反转,将数组元素倒过来排列?【含详细解析】
Java中如何实现数组反转,将数组元素倒过来排列?[含详细解析] 数组元素反转:本来的样子{1,2,3,4,5},反转后{5,4,3,2,1}.要求,不能使用新数组. 分析过程 数组元素反转其实就是对 ...
- java中定义byte数组,浅谈java的byte数组的不同写法
(由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...
最新文章
- 2019计算机应用设计大赛,2019年郑州大学软件与应用科技学院计算机设计大赛成功举办...
- LAMP:用yum安装
- mxnet基础到提高(40)-ndarray之运算(1)
- 每天读5分钟,受益匪浅、
- nginx 学习笔记【持续更新...】
- 嵌入式常见笔试题总结(5)
- asp绑定gridview属性_如何在ASP.NET Core中自定义Azure Storage File Provider
- 嘉峪关计算机网络优化,嘉峪关广播电视大学计算机网络技术专业_甘肃报名_网络教育计算机网络技术专业教学计划_中国教育在线...
- 【火炉炼AI】深度学习006-移花接木-用Keras迁移学习提升性能
- 2018/4/7 Mybatis源码结构概览
- 控制网页frame vba_V8 bindings 设计isolate,context,world,frame之间的关系(翻译)
- 探讨OSPF次优路由选择
- Mac上安装eclipse svn插件subclipse
- 常用的20个js简洁代码
- 医疗项目 01(项目简介)
- 基于百度飞桨PaddleOCR的图片文字识别
- linux下用vi,vim编辑时退出编辑模式(wq)无法保存退出
- 修改和重新封装了一个GHOST XP
- matlab - 3 自由度的机械臂
- C语言结构体指针的定义和初始化
热门文章
- 教授专栏08| 徐岩:青年震荡与青年危机
- ffmpeg 命令的使用
- 网页制作的形式美的规则
- 检测网络不通时自动重启计算机,电脑连不上网怎么办?6个最简单最实用的解决办法,帮你轻松搞定!...
- 雷电模拟器忘记锁屏密码
- 【建议收藏】ChatGPT 联网版抢先体验,学会这 8 大高阶实用技巧,让你秒上手!
- CAD教程:CAD看图软件中怎么设置比例?
- [组合数学] 容斥原理polya定理
- 【数字图像处理】双三次插值及其卷积算法(Bicubic Interpolation)
- 服务器下多网站设置,网站配置多个服务器