java简单实现数组的增删改查方法

目录
  • 1.一维数组​
  • 2.数组的扩容
  • 3.数组的复制
    • 1.直接将数组赋值给新数组
    • 2.创建一个新的数组,再将原数组的数据逐个赋值
    • 4.数组的删除
    • 5.数组的排序
  • 6.数组的查找
    • 1.顺序查找:从头到尾遍历(简单除暴,效率相对较低)
    • 2.二分法查找
  • 总结

1.一维数组​

概念:一组数据的容器(数组可以存放多个数据)

​ 注意:

​ 1.数组是引用数据类型

​ 2.数组中的数据又叫做元素

​ 3.每个元素都有编号叫做下标/索引

​ 4.下标从0开始

​ 5.数组初始化后,会在内存中开辟一连串连续的空间

​ 6.数组一旦初始化后长度不可以改变(数组没有扩容和删除)

​ 7.数组的操作:添加、修改、查询​

​ 数组的声明:数据类型[] 数组名;​

数组的初始化:

​ 静态初始化:数据由程序员指定,长度由系统分配

public static void main(String[] args){
		//静态初始化1
		//String[] names = new String[]{"小明","小红","铁蛋","二狗","大傻子"};
		//静态初始化2
		//String[] names;
		//names = new String[]{"小明","小红","铁蛋","二狗","大傻子"};
		//静态初始化3
		String[] 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);//5
		System.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){//遍历数组,依次把元素赋值给str
			System.out.println(str);
		}
		/**
			遍历时要使用到下标,就用for循环遍历
			遍历时要不使用到下标,就用foreach遍历
		*/
	}

动态初始化:长度由程序员指定,数据由系统分配(默认值)

​ 整数类型:0

​ 浮点类型:0.0

​ 字符类型:' '

​ 布尔类型:false

​ 引用类型:null(空)

public static void main(String[] args){
		//动态初始化1
		String[] 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);//5
		System.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){//遍历数组,依次把元素赋值给str
			System.out.println(str);
		}
		/**
			遍历时要使用到下标,就用for循环遍历
			遍历时要不使用到下标,就用foreach遍历
		*/

2.数组的扩容

前面讲到数组一旦初始化后长度不可以改变(数组没有扩容和删除),那我们如何在原来的数组上添加数据。数组没有扩容,但是可以将数组中的数据从小的容器放到大的容器里。

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

3.数组的复制

1.直接将数组赋值给新数组

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();
	}
}

修改原数据前:小明 小红 铁蛋 二狗 修改原数据后:大傻子 小红 铁蛋 二狗

2.创建一个新的数组,再将原数组的数据逐个赋值

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);
		}
	}

小明 小红 铁蛋 二狗

4.数组的删除

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

5.数组的排序

数组的排序方法有很多种,今天就分享比较简单的冒泡排序

​ 口诀:

​ 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

6.数组的查找

1.顺序查找:从头到尾遍历(简单除暴,效率相对较低)

for(int i = 0;i<is.length;i++){
			if(is[i] == num){
				System.out.println("查找到了");
			}
		}

2.二分法查找

​ 前提:先排序(效率高于顺序查找)

​ 排序时就可以使用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;
			}
		}
	}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java如何实现单链表的增删改查

    一.新建学生节点类 Stu_Node节点包含: 学号:int num; 姓名:String name; 性别:String gender; 下一个节点:Stu_Node next; 为了便于打印节点内容需要重写toString方法 class Stu_Node{ int num; String name; String gender; Stu_Node next; @Override public String toString() { return "Stu_Node{" + &qu

  • Java实现RedisUtils操作五大集合(增删改查)

    前排提示,我在这个工具类加了@Component注解,如果在springboot的项目使用,记得通过@Autowired注入使用. import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; import java.io.Serializabl

  • 新手初学Java数组

    什么是数组 数组是相同类型数据的有序集合 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 数组的声明创建 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: dataType[] array;//例: int[] nums; 推荐使用这种写法 或者 dataType array[];//例: int nums[]; 使用new来创建数组的语法: dataType[] array =

  • Java常问面试内容--数组、声明、初始化、冒泡、多维数组、稀疏数组

    目录 数组 数组声明创建 数组初始化 数组的四个基本特点 数组边界 多维数组 稀疏数组 总结 数组 数组时相同类型数据的有序集合 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成 其中,每一个数据称作一个数组元素,每一个数组元素可以通过一个下标来访问它们. 数组声明创建 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法. da taType[] arrayRefVar //首选方法 dateType arrayRefVar[] //效果相同,但不是首选方法 j

  • Java连接 JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库.比如建立数据库连接.执行SQL语句进行数据的存取操作. JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创

  • java简单实现数组的增删改查方法

    目录 1.一维数组​ 2.数组的扩容 3.数组的复制 1.直接将数组赋值给新数组 2.创建一个新的数组,再将原数组的数据逐个赋值 4.数组的删除 5.数组的排序 6.数组的查找 1.顺序查找:从头到尾遍历(简单除暴,效率相对较低) 2.二分法查找 总结 1.一维数组​ 概念:一组数据的容器(数组可以存放多个数据) ​ 注意: ​ 1.数组是引用数据类型 ​ 2.数组中的数据又叫做元素 ​ 3.每个元素都有编号叫做下标/索引 ​ 4.下标从0开始 ​ 5.数组初始化后,会在内存中开辟一连串连续的空

  • Java 单链表数据结构的增删改查教程

    我就废话不多说了,大家还是直接看代码吧~ package 链表; /** * *1)单链表的插入.删除.查找操作: * 2)链表中存储的是int类型的数据: **/ public class SinglyLinkedList { private Node head = null; //查找操作 public Node findByValue(int value){ Node p = head; //从链表头部开始查找 while(p.next != null && p.data != va

  • JS操作对象数组实现增删改查实例代码

    1.介绍 最近帮朋友弄一个简单的针对json数组的增删改成页面,正好涉及到了js去操作对象数组实现增删改查功能.我估计很多朋友应该也会遇到这类操作,所以记录一下以便分享. 2.数据准备 这里我就以学生对象数组为例了,其实这个数组和json数组操作起来基本一致的,转换一下即可.例如可以使用JSON.parse将一串JSON字符串转换为js对象数组. 测试数据: // 学生对象数组 var students = [ {id:1, name: "张三", age: 14}, {id:2, n

  • 浅谈JavaScript中数组的增删改查

    数组的增加 •ary.push()   向数组末尾添加元素,返回的是添加后新数组的长度,原有数组改变 •ary.unshift()  向数组开头添加元素,返回的是添加后新数组的长度,原有数组改变 • var ary=[1,2,3,4];   var res=ary.unshift(6);   console.log(res); ---->5 返回的是新数组的长度•ary.splice(n,m,x)从索引n开始删除m个元素,把新增的元素X放在索引n的前面,把删除的元素当成一个新数组返回,原有数组改

  • Java基于jdbc实现的增删改查操作示例

    本文实例讲述了Java基于jdbc实现的增删改查操作.分享给大家供大家参考,具体如下: 增删改操作: package java_web; import java.sql.DriverManager; import java.sql.SQLException; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; /** * jdbc CURD * @author Administrator * */ public c

  • JS实现数组的增删改查操作示例

    本文实例讲述了JS实现数组的增删改查操作.分享给大家供大家参考,具体如下: 1.给原数组中 新增 用到 push 改变原数组的长度并返回新的长度,新元素添加在原数组的末尾 <doctype> <html> <head>元素新增数组</head> <body> <div id="dem">点击会给原素组末尾新增元素个数</div> <button onclick="funct()"

  • 编写Java代码对HDFS进行增删改查操作代码实例

    本文实例为大家分享了Java代码对HDFS进行增删改查操作的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI; import org.apache.commons.compress.utils.IOUtils; import org.apache.hadoop.conf.Configuration; impo

  • java连接mongoDB并进行增删改查操作实例详解

    本文实例讲述了java连接mongoDB并进行增删改查操作.分享给大家供大家参考,具体如下: 1.安装 MongoDB JDBC驱动程序 在java中使用mongoDB之前,首先需要拥有java连接mongoDB的第三方驱动包(jar包) 1)maven项目可通过在pom.xml中添加依赖 <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-ja

  • Java中SSM框架实现增删改查功能代码详解

    记录一下自己第一次整合smm框架的步骤. 参考博客和网站有:我没有三颗心脏 How2J学习网站 1.数据库使用的是mySql,首先创建数据库ssm1,并创建表student create database ssm1; use ssm1; CREATE TABLE student( id int(11) NOT NULL AUTO_INCREMENT, student_id int(11) NOT NULL UNIQUE, name varchar(255) NOT NULL, age int(1

  • Java实现单链表SingleLinkedList增删改查及反转 逆序等

    节点类 可以根据需要,对节点属性进行修改.注意重写toString()方法,以便后续的输出操作. //节点类 class Node { public int id; public String name; public Node next; public Node(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Node{" + &

随机推荐