⭐ 多次元配列
多次元配列は、配列の配列として見ることができます。2 次元、3 次元、またはそれ以上の次元の配列が存在する可能性がありますが、実際の開発ではほとんど使用されません。2次元配列まで。
【例】2次元配列の宣言
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];//非法
}
}
[例] 2次元配列の静的初期化
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]);
}
}
[例] 2次元配列の動的初期化
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]));
}
}
実行結果は以下のようになります。
⭐ 配列はテーブルデータを保存します
テーブルは、コンピューティングの世界で最も普及しているモデルです。インターネット上で目にするすべてのデータは、本質的には「テーブル」です。
テーブルを観察すると、各行は 1 次元配列を使用して格納できることがわかります。
Object[ ] a1 = {1001,"高淇",18,"讲师","2-14"};
Object[ ] a2 = {1002,"高小七",19,"助教","10-10"};
Object[ ] a3 = {1003,"高小琴",20,"班主任","5-5"};
知らせ:
⭐ 此处基本数据类型”1001”,本质不是 Object 对象。JAVA 编译器会自动把基本数据类型“自动装箱”成包装类对象。
この方法では、別の 2 次元配列を定義し、その中に上記の 3 つの配列を入れるだけで済みます。
Object[ ][ ] emps = new Object[3][ ];
emps[0] = a1;
emps[1] = a2;
emps[2] = a3;
[例] 2 次元配列を使用してテーブル データを保存する
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]));
}
}
[例] Javabeanと1次元配列を使用してテーブル情報を保存する
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;
}
}
⭐同等のインターフェース
複数のオブジェクトを比較するには、「比較ルール」を用意し、ソートを実装する必要があります。
実際、Java の並べ替えアルゴリズムの最下層も Comparable インターフェイスに依存しています。
Comparable インターフェイスにはメソッドが 1 つだけあります。
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;
}
[Test Comparable Interface] Arrays クラスを使用して配列要素を並べ替える 2
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;
}
}