精通Java数组的艺术:从初学者到高手的进阶之路(二)

news2024/11/25 4:29:07

    • ⭐ 多维数组
    • ⭐ 数组存储表格数据
    • ⭐ Comparable 接口

⭐ 多维数组

多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组,但是实际开发中用的非常少。最多到二维数组。
在这里插入图片描述

【eg】二维数组的声明

	public class Test {
		public static void main(String[ ] args) {
		// Java中多维数组的声明和初始化应按从低维到高维的顺序进行
		int[ ][ ] a = new int[3][ ];
		a[0] = new int[2];
		a[1] = new int[4];
		a[2] = new int[3];
		// int a1[ ][ ]=new int[ ][4];//非法
	}
}

【eg】二维数组的静态初始化

	public class Test {
		public static void main(String[ ] args) {
			int[ ][ ] a = { { 1, 2, 3 }, { 3, 4 }, { 3, 5, 6, 7 } };
			System.out.println(a[2][3]);
	}
}

在这里插入图片描述

【eg】二维数组的动态初始化

import java.util.Arrays;
		public class Test {
			public static void main(String[ ] args) {
				int[ ][ ] a = new int[3][ ];
				// a[0] = {1,2,5}; //错误,没有声明类型就初始化
				a[0] = new int[ ] { 1, 2 };
				a[1] = new int[ ] { 2, 2 };
				a[2] = new int[ ] { 2, 2, 3, 4 };
		System.out.println(a[2][3]);
		System.out.println(Arrays.toString(a[0]));
		System.out.println(Arrays.toString(a[1]));
		System.out.println(Arrays.toString(a[2]));
	}
}

执行结果如下所示:
在这里插入图片描述

⭐ 数组存储表格数据

表格是计算机世界最普遍的模型。大家在互联网上看到的所有数据本质上都是“表格”。
在这里插入图片描述
我们观察表格,发现每一行可以使用一个一维数组存储:

Object[ ] a1 = {1001,"高淇",18,"讲师","2-14"};
Object[ ] a2 = {1002,"高小七",19,"助教","10-10"};
Object[ ] a3 = {1003,"高小琴",20,"班主任","5-5"};

注意:

⭐	此处基本数据类型”1001”,本质不是 Object 对象。JAVA 编译器会自动把基本数据类型“自动装箱”成包装类对象。

这样我们只需要再定义一个二维数组,将上面 3 个数组放入即可:

Object[ ][ ] emps = new Object[3][ ];
emps[0] = a1;
emps[1] = a2;
emps[2] = a3;

【eg】使用二维数组保存表格数据

import java.util.Arrays;
		public class Test {
			public static void main(String[ ] args) {
				Object[ ] a1 = {1001,"高淇",18,"讲师","2-14"};
				Object[ ] a2 = {1002,"高小七",19,"助教","10-10"};
				Object[ ] a3 = {1003,"高小琴",20,"班主任","5-5"};
				Object[ ][ ] emps = new Object[3][ ];
				emps[0] = a1;
				emps[1] = a2;
				emps[2] = a3;
		System.out.println(Arrays.toString(emps[0]));
		System.out.println(Arrays.toString(emps[1]));
		System.out.println(Arrays.toString(emps[2]));
	}
}

【eg】使用 javabean 和一维数组保存表格信息
在这里插入图片描述

import java.util.Arrays;
		public class Test {
		 	public static void main(String[ ] args) {
 				Emp[] emps = {
 				new Emp(1001,"高淇",18,"讲师","2-14"),
 				new Emp(1002,"高小七",19,"助教","10-10"),
				new Emp(1003,"高小八",20,"班主任","5-5")
	 };
				 for (Emp e:emps){
			 System.out.println(e);
		 }
	 }
}
class Emp {
 	private int id;
 	private String name;
 	private int age;
 	private String job;
 	private String hiredate;
 		public Emp(int id, String name, int age, String job, String hiredate) {
 			this.id = id;
 			this.name = name;
 			this.age = age;
 			this.job = job;
 			this.hiredate = hiredate;
 	}
 @Override
 		public String toString() {
 			return "["+id+","+name+","+age+","+job+","+hiredate+"]";
 }
 		public int getId() {
			 return id;
 }
 		public void setId(int id) {
 			this.id = id;
 }
 		public String getName() {
 			return name;
 }
 		public void setName(String name) {
 			this.name = name;
 }
 		public int getAge() {
 			return age;
 }
 		public void setAge(int age) {
 			this.age = age;
 }
 		public String getJob() {
 			return job;
 }
 		public void setJob(String job) {
 			this.job = job;
 }
 		public String getHiredate() {
		 	return hiredate;
 }
 		public void setHiredate(String hiredate) {
 			this.hiredate = hiredate;
 	}
}

⭐ Comparable 接口

在这里插入图片描述

多个对象做比较,就要有“比较规则”,然后实现排序。

事实上,java 中排序算法的底层也依赖 Comparable 接口。

Comparable 接口中只有一个方法:
public int compareTo(Object obj) obj 为要比较的对象

方法中,将当前对象和 obj 这个对象进行比较,如果大于返回 1,等于返回 0,小于返回-1. (此处的 1 也可以是正整数,-1 也可以是负整数)。 compareTo 方法的代码也比较固定:

	public int compareTo(Object o) {
			Man man = (Man) o;
			if (this.age < man.age) {
				return -1;
	}
			if (this.age > man.age) {
				return 1;
	}
				return 0;
}

【测试 Comparable 接口】使用 Arrays 类对数组元素进行排序二

import java.util.Arrays;
		public class Test {
			public static void main(String[ ] args) {
				Man[ ] msMans = { new Man(3, "a"), new Man(60, "b"), new Man(2, "c") };
				Arrays.sort(msMans);
			System.out.println(Arrays.toString(msMans));
	}
}
		class Man implements Comparable {
			int age;
			int id;
			String name;
		public Man(int age, String name) {
			super();
			this.age = age;
			this.name = name;
}
		public String toString() {
			return this.name;
}
		public int compareTo(Object o) {
			Man man = (Man) o;
			if (this.age < man.age) {
			return -1;
}
			if (this.age > man.age) {
			return 1;
}
			return 0;
	}
}

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

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

相关文章

一起看 I/O | Wear OS 更新一览

作者 / Android 开发者关系工程师 Kseniia Shumelchyk 随着 Wear OS 平台的不断发展&#xff0c;我们很高兴与您分享一些最新的功能和改进&#xff0c;以帮助您为用户打造富有吸引力的创新体验。 Peloton 和 Todoist 等合作伙伴一直以来都针对 Wear OS 打造卓越体验&#xff0c…

Android自定义一个车牌字母选择键盘

在一般和车相关的应用&#xff0c;难免会和车牌打交道&#xff0c;组成车牌的要素&#xff0c;国内无非就是省份简称地区代码英文或者数字组成&#xff0c;比如京A12345&#xff0c;在需要输入车牌的功能上&#xff0c;就需要有省份简称键盘和英文数字键盘了&#xff0c;在上篇…

深度学习(自编码器)

深度学习目录 自适应线性单元 (Widrow and Hoff, 1960)神经认知机 (Fukushima, 1980)GPU-加速 卷积网络 (Chellapilla et al., 2006)深度玻尔兹曼机 (Salakhutdinov and Hinton, 2009a)无监督卷积网络 (Jarrett et al., 2009b)GPU-加速 多层感知机 (Ciresan et al., 2010)分布…

人工影响天气期末复习笔记

&#xff08;一&#xff09;什么是人工影响天气 利用自然云微物理不稳定性&#xff0c;通过一定的技术方法改变云的微结构&#xff0c;从而改变云降水的发展过程&#xff0c;从而达到增加降水&#xff0c;防雹&#xff0c;消云雾等目的 &#xff08;二&#xff09;为什么要人工…

【历史上的今天】6 月 6 日:世界 IPv6 启动纪念日;《俄罗斯方块》发布;小红书诞生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 6 月 6 日&#xff0c;在 2019 年的今天&#xff0c;工信部正式发放 5G 牌照。这一天&#xff0c;有四家企业被颁发了基础电信业务经营许可证&#xff0c;从此…

社区团购系统源码后台解析

近年来&#xff0c;随着购物方式的改变&#xff0c;社区团购可以说是越来越受关注了&#xff0c;大家应该对社区团购多多少少有一些认知&#xff0c;其实社区团购这样的商业模式拥有强大的赚钱的潜力&#xff0c;主要就是因为它的运营成本低&#xff0c;而且上手也不需要很复杂…

FPGA设计的指导性原则 (四)

在FPGA Express/FPGA Compiler II中,用鼠标右键单击编译后的芯片图标, 在弹出的命令对话框中选择“Edit Constraints”命令编辑综合约束文件(扩展 名为CTL),选择端口(Ports)选项卡,指定所需信号的全局时钟域为 “DONT USE”。图22所示为在FPGA Express综合约束编辑器中…

私有化部署低代码开发工具:jvs-rules 规则引擎决策流参数说明

JVS规则引擎决策调用 通过决策流水号查询入参变量 [请求参数]决策流 ​ GET/mgr/risk//test/parameter/flow/{no} 请求数据类型 application/x-www-form-urlencoded 响应数据类型 [ "*/*" ] 请求参数 参数名称 参数说明 请求类型 是否必须 数据类型 sch…

【Flutter混合开发】开发一个简单的快速启动框架

目录 前言启动插件Flutter代码Android代码IOS代码 启动模块使用android端ios端 前言 因为在移动端中启动Flutter页面会有短暂空白&#xff0c;虽然官方提供了引擎预热机制&#xff0c;但是需要提前将所有页面都进行预热&#xff0c;这样开发成本较高&#xff0c;在研究了闲鱼的…

通过点引导掩码表示的弱半监督实例分割

文章目录 The Devil is in the Points: Weakly Semi-Supervised Instance Segmentation via Point-Guided Mask Representation摘要本文方法Weakly Semi-Supervised Instance Segmentation using Point LabelsMask Refinement Network 实验结果消融实验 The Devil is in the Po…

【JavaEE】HTTP状态码-HTTP数据报的构造

HTTP状态码HTTP数据报的构造 文章目录 JavaEE & HTTP状态码 & HTTP数据报的构造1. HTTP状态码1.1 200 - OK1.2 404 - Not Found1.3 403 - Forbidden1.4 500 - Internal Server Error1.5 504 - Gateway Timeout1.6 302/301 重定向 2. 构造HTTP请求2.1 浏览器搜索栏输入u…

Express应用之记账本项目总结

前言 在学完nodejs相关知识后第一个实践就是这个记账本项目&#xff0c;本篇文章是对项目遇到的问题的总结。 先聊聊技术栈&#xff1a; 前端技术&#xff1a;h5结合bootstrap框架&#xff1b; 后端技术&#xff1a;nodejsExpress框架lowdb数据库。 gitee地址&#xff1a;ht…

FinalShell界面左侧为什么能够监测系统指标动态变化的原理并用python实现

前言&#xff1a; 我们可以看出FinalShell是用Java写的&#xff0c;具体怎么看出来的&#xff0c;不能光看界面logo是Java的logo&#xff0c;还要进它的安装目录下进行查看是否真是用Java编写的&#xff01;&#xff01;&#xff01; 具体查看如下&#xff1a; 查看finalshe…

软件外包开发在线监测工具

软件系统上线后需要在线网络工具监测系统的运行&#xff0c;这样在系统出现故障时第一时间通知到系统维护人员&#xff0c;对于软件系统的稳定运行是必不可少的监测工具。今天和大家分享一些常用的在线监测工具&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#…

Vue.js 中的 TypeScript 支持是什么?如何使用 TypeScript?

Vue.js 中的 TypeScript 支持 Vue.js 是一款流行的前端框架&#xff0c;它提供了一种简单、灵活的方式来构建用户界面。随着 TypeScript 的普及&#xff0c;Vue.js 也开始支持 TypeScript&#xff0c;使得开发者可以使用类型检查等 TypeScript 特性来提高代码质量和可维护性。…

看完这篇卡尔曼滤波原理,我被惊到了!

在网上看了不少与卡尔曼滤波相关的博客、论文&#xff0c;要么是只谈理论、缺乏感性&#xff0c;或者有感性认识&#xff0c;缺乏理论推导。能兼顾二者的少之又少&#xff0c;直到我看到了国外的一篇博文&#xff0c;真的惊艳到我了&#xff0c;不得不佩服作者这种细致入微的精…

Vue-- 锚点实现左右两栏联动--scrollIntoView方法

官网&#xff1a;scrollintoView 通过滚动浏览器窗口或某个容器元素&#xff0c;调用元素就可以出现在视窗中。 利用scrollIntoView() 函数 默认是true document.getElementById(需要滚动的div的id).scrollIntoView() 如果给该方法传入true作为参数&#xff0c;或者不传入任何参…

什么是 Vue.js 中的 computed 属性?

什么是 Vue.js 中的 computed 属性&#xff1f; 在 Vue.js 中&#xff0c;computed 属性是一个非常重要的概念。它提供了一种方便的方式来计算和监听 Vue.js 实例中的属性&#xff0c;从而使得代码更加简洁、易于维护。在本文中&#xff0c;我们将详细介绍 computed 属性的原理…

【SVN】设置ubuntu下SVN服务开机自启

目录 0.背景环境 1.开机自启步骤 0.背景环境 1&#xff09;ubuntu下&#xff0c;已搭建好svn版本库&#xff0c;具体搭建方法参考文末的其他博客链接 2&#xff09;在搭svn服务器的过程中&#xff0c;发现ubuntu重启后&#xff0c;svn服务就关闭了 svn正常开启时见下图 所以…

ps技术的革命创新-photoshop beta版

Photoshop 2023 Beta功能介绍 全新的Generative Fill功能现已加入Photoshop Beta桌面应用程序&#xff0c;可以让用户在非破坏性的基础上轻松地添加、扩展或删除图像内容&#xff0c;实现令人惊喜、高兴和震撼的真实效果&#xff0c;仅需数秒。使用此功能&#xff0c;只需要选…