本篇内容主要讲解“java怎么实现数组的增删改查”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java怎么实现数组的增删改查”吧!目录一维数组数组的扩容数组的复制直接将数组赋值给新数组创建一个新
本篇内容主要讲解“java怎么实现数组的增删改查”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java怎么实现数组的增删改查”吧!
一维数组
数组的扩容
数组的复制
直接将数组赋值给新数组
创建一个新的数组,再将原数组的数据逐个赋值
数组的删除
数组的排序
数组的查找
顺序查找:从头到尾遍历(简单除暴,效率相对较低)
二分法查找
概念:一组数据的容器(数组可以存放多个数据)
注意:
数组是引用数据类型
数组中的数据又叫做元素
每个元素都有编号叫做下标/索引
下标从0开始
数组初始化后,会在内存中开辟一连串连续的空间
数组一旦初始化后长度不可以改变(数组没有扩容和删除)
数组的操作:添加、修改、查询
数组的声明:数据类型[] 数组名;
数组的初始化:
静态初始化:数据由程序员指定,长度由系统分配
public static void main(String[] args){//静态初始化1//String[] names = new String[]{"小明","小红","铁蛋","二狗","大傻子"};//静态初始化2//String[] names;//names = new String[]{"小明","小红","铁蛋","二狗","大傻子"};//静态初始化3String[] names = {"小明","小红","铁蛋","二狗","大傻子"};//设置指定下标上的元素names[3] = "大狗";//获取指定下标上的元素String n = names[3];System.out.println("获取指定下标上的元素:" + n);//林成//ArrayIndexOutOfBoundsException - 数组下标越界异常//System.out.println(names[100]);//获取元素个数int len = names.length;System.out.println("获取元素个数:" + len);//5System.out.println("-----------");//遍历 - for循环for(int i = 0;i<names.length;i++){System.out.println(names[i]);}System.out.println("-----------");//遍历 - foreach(增强for循环)for(String str:names){//遍历数组,依次把元素赋值给strSystem.out.println(str);}}
动态初始化:长度由程序员指定,数据由系统分配(默认值)
整数类型:0
浮点类型:0.0
字符类型:' '
布尔类型:false
引用类型:null(空)
public static void main(String[] args){//动态初始化1String[] names = new String[5];//5->5个长度//设置指定下标上的元素names[0] = "小明";names[1] = "铁蛋";names[2] = "二狗";//获取指定下标上的元素String n = names[2];System.out.println("获取指定下标上的元素:" + n);//二狗//ArrayIndexOutOfBoundsException - 数组下标越界异常//System.out.println(names[100]);//获取元素个数int len = names.length;System.out.println("获取元素个数:" + len);//5System.out.println("-----------");//遍历 - for循环for(int i = 0;i<names.length;i++){System.out.println(names[i]);}System.out.println("-----------");//遍历 - foreach(增强for循环)for(String str:names){//遍历数组,依次把元素赋值给strSystem.out.println(str);}
前面讲到数组一旦初始化后长度不可以改变(数组没有扩容和删除),那我们如何在原来的数组上添加数据。数组没有扩容,但是可以将数组中的数据从小的容器放到大的容器里。
public static void main(String[] args){//源数组String[] names = {"小明","小红","铁蛋","二狗"};//新数组//(names.length>>1在此次可以理解为(names.length/2)int capacity = names.length + (names.length>>1);//新容量:是源数组长度的1.5倍String[] newNames = new String[capacity];//把源数组所有的数据迁移到新数组中for(int i = 0;i<names.length;i++){newNames[i] = names[i];}//将新数组的地址赋值给源数组names = newNames;//遍历源数组for(String name:names){System.out.println(name);}}
小明小红铁蛋二狗 null null
String[] names = {“小明”,“小红”,“铁蛋”,“二狗”};
String[] newNames = names;
这样做会有一个小缺陷,修改源数组,新数组的数据也随之改变.这是因为赋值号所给到的不是原数组的数据,而是原数组的地址。
public class Test111 {public static void main(String[] args){ //源数组 String[] names = {"小明","小红","铁蛋","二狗"}; //新数组 String[] newNames = names; //遍历新数组 System.out.print("修改原数据前:"); for(String name : newNames){ System.out.print(name+"\t"); } System.out.println(); //修改源数组 names[0] = "大傻子"; //遍历新数组 System.out.print("修改原数据后:"); for(String name : newNames){ System.out.print(name+"\t"); } System.out.println();}}
修改原数据前:小明 小红 铁蛋 二狗 修改原数据后:大傻子 小红 铁蛋 二狗
public static void main(String[] args){//源数组String[] names = {"小明","小红","铁蛋","二狗"};//新数组String[] newNames = new String[names.length];//将源数组中数据依次赋值给新数组for(int i = 0;i<names.length;i++){newNames[i] = names[i];}//修改源数组names[0] = "大聪明";//遍历新数组for(String name : newNames){System.out.println(name);}}
小明 小红 铁蛋 二狗
1.新建一个小容量的数组,然后将不删除的数据导入。排除了需要删除的数据
缺点:数组原本是存放数据的,删除元素后,数组长度变短
public static void main(String[] args){//源数组String[] names = {"小明","小红","铁蛋","二狗"};//新数组String[] newNames = new String[names.length-1];//将源数组的数据迁移到新数组中,要删除的元素(深田咏美)除外int index = 0;//新数组的下标for(String name:names){if(!name.equals("小红")){newNames[index] = name;index++;}}//将新数组的地址赋值给源数组names = newNames;//遍历源数组for(String name:names){System.out.println(name);}}
小明 铁蛋 二狗
2.将需要删除的数据后面的数据整体向前移,覆盖掉删除的数据,这样就可以留出空间了
public static void main(String[] args){//源数组String[] names = {"小明","小红","铁蛋","二狗"};//数据的迁移for(int i = 1;i<names.length-1;i++){names[i] = names[i+1];}names[names.length-1] = null;//遍历源数组for(String name:names){System.out.println(name);}}
小明铁蛋二狗 null
数组的排序方法有很多种,今天就分享比较简单的冒泡排序
口诀:
N个数字来排序
两两相比小靠前
外层循环N-1
内层循环N-1-i
public static void main(String[] args){int[] is = {39,77,27,20,45,62};for(int i = 0;i<is.length-1;i++){for(int j = 0;j<is.length-1-i;j++){if(is[j] > is[j+1]){int temp = is[j];is[j] = is[j+1];is[j+1] = temp;}}}for(int num : is){System.out.println(num);}}
这里分享一个Arrays工具类,导入Arrays包后可直接调用里面的排序方法sort
public static void main(String[] args){import java.util.Arrays; int[] a={1,5,8,6}; for(int num : a){System.out.println(num);}}
1 5 6 8
for(int i = 0;i<is.length;i++){if(is[i] == num){System.out.println("查找到了");}}
前提:先排序(效率高于顺序查找)
排序时就可以使用Arrays.sort(is);
**二分法查找适用于数据量较大时,但是数据需要先排好顺序。
public static void main(String[] args){int[] is = {39,77,27,20,45,62};int num = 77;//排序Arrays.sort(is);int start = 0;int end = is.length-1;while(start <= end){int mid = (start+end)/2;if(num >is[mid]){start = mid+1;}else if(num < is[mid]){end = mid-1;}else{System.out.println("查找到了");break;}}}
到此,相信大家对“java怎么实现数组的增删改查”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
--结束END--
本文标题: java怎么实现数组的增删改查
本文链接: https://lsjlt.com/news/299195.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0