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

⭐ 多维数组

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

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

猜你喜欢

转载自blog.csdn.net/Wwd631255/article/details/131060800
今日推荐