Tatasusunan Java
Array ialah salah satu struktur data yang penting untuk setiap bahasa pengaturcaraan Sudah tentu, bahasa yang berbeza melaksanakan dan memproses tatasusunan secara berbeza.
Array yang disediakan dalam bahasa Java digunakan untuk menyimpan elemen saiz tetap daripada jenis yang sama.
Anda boleh mengisytiharkan pembolehubah tatasusunan, seperti nombor[100] dan bukannya mengisytiharkan terus 100 pembolehubah bebas nombor0, nombor1, ...., nombor99.
Tutorial ini akan memperkenalkan anda kepada pengisytiharan, penciptaan dan permulaan tatasusunan Java dan memberi anda kod yang sepadan.
Mengisytiharkan pembolehubah tatasusunan
Pertama, anda mesti mengisytiharkan pembolehubah tatasusunan sebelum anda boleh menggunakan tatasusunan dalam atur cara anda. Berikut ialah sintaks untuk mengisytiharkan pembolehubah tatasusunan:
dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]; // 效果相同,但不是首选方法
Nota: Adalah disyorkan untuk menggunakan gaya pengisytiharan dataType[] arrayRefVar untuk mengisytiharkan pembolehubah tatasusunan. Gaya dataType arrayRefVar[] berasal daripada bahasa C/C++ dan diterima pakai dalam Java untuk membolehkan pengaturcara C/C++ memahami bahasa java dengan cepat.
Contoh
Berikut ialah contoh kod bagi kedua-dua sintaks ini:
double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法
Mencipta tatasusunan
Bahasa Java menggunakan operator baharu untuk mencipta tatasusunan , sintaksnya adalah seperti berikut:
arrayRefVar = new dataType[arraySize];
Pernyataan sintaks di atas melakukan dua perkara:
1 Cipta tatasusunan menggunakan dataType[arraySize].
2. Berikan rujukan tatasusunan yang baru dibuat kepada tatasusunan pembolehubahRefVar.
Pengisytiharan pembolehubah tatasusunan dan penciptaan tatasusunan boleh dilengkapkan dengan satu pernyataan, seperti yang ditunjukkan di bawah:
dataType[] arrayRefVar = new dataType[arraySize];
Selain itu, anda juga boleh mencipta tatasusunan dengan cara berikut .
dataType[] arrayRefVar = {value0, value1, ..., valuek};
Elemen tatasusunan diakses melalui indeks. Pengindeksan tatasusunan bermula pada 0, jadi nilai indeks berjulat dari 0 hingga arrayRefVar.length-1.
Contoh
Pernyataan berikut mula-mula mengisytiharkan pembolehubah tatasusunan myList, kemudian mencipta tatasusunan yang mengandungi 10 elemen jenis berganda dan memberikan rujukannya kepada pembolehubah myList.
public class TestArray { public static void main(String[] args) { // 数组大小 int size = 10; // 定义数组 double[] myList = new double[size]; myList[0] = 5.6; myList[1] = 4.5; myList[2] = 3.3; myList[3] = 13.2; myList[4] = 4.0; myList[5] = 34.33; myList[6] = 34.0; myList[7] = 45.45; myList[8] = 99.993; myList[9] = 11123; // 计算所有元素的总和 double total = 0; for (int i = 0; i < size; i++) { total += myList[i]; } System.out.println("总和为: " + total); } }
Hasil keluaran contoh di atas ialah:
总和为: 11367.373
Gambar berikut menggambarkan tatasusunan myList. Di sini, terdapat 10 elemen berganda dalam tatasusunan myList, dan subskripnya berkisar antara 0 hingga 9.
Memproses tatasusunan
Jenis elemen tatasusunan dan saiz tatasusunan ditentukan, jadi apabila memproses elemen tatasusunan, kami biasanya menggunakan gelung asas atau gelung foreach.
Contoh
Contoh ini menunjukkan sepenuhnya cara mencipta, memulakan dan memanipulasi tatasusunan:
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (int i = 0; i < myList.length; i++) { System.out.println(myList[i] + " "); } // 计算所有元素的总和 double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("Total is " + total); // 查找最大元素 double max = myList[0]; for (int i = 1; i < myList.length; i++) { if (myList[i] > max) max = myList[i]; } System.out.println("Max is " + max); } }
Contoh di atas menyusun dan menjalankan keputusan seperti berikut:
1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5
gelung foreach
JDK 1.5 memperkenalkan jenis gelung baharu, dipanggil gelung foreach atau gelung dipertingkat, yang boleh merentasi tatasusunan tanpa menggunakan subskrip.
Contoh
Contoh ini digunakan untuk memaparkan semua elemen dalam tatasusunan myList:
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (double element: myList) { System.out.println(element); } } }
Hasil penyusunan dan larian contoh di atas adalah seperti berikut:
1.9 2.9 3.4 3.5
Tatasusunan
boleh dihantar sebagai parameter kepada kaedah. Sebagai contoh, contoh berikut ialah kaedah yang mencetak elemen dalam tatasusunan int.
public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }
Contoh berikut memanggil kaedah printArray untuk mencetak 3, 1, 2, 6, 4 dan 2:
printArray(new int[]{3, 1, 2, 6, 4, 2});
Tatasusunan digunakan sebagai nilai pulangan fungsi
public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; }
Dalam contoh di atas, tatasusunan hasil digunakan sebagai nilai pulangan fungsi.
Kelas tatasusunan
Kelas java.util.Arrays boleh mengendalikan tatasusunan dengan mudah dan semua kaedah yang disediakannya adalah statik. Mempunyai fungsi berikut:
Tetapkan nilai pada tatasusunan: melalui kaedah isian.
Isih tatasusunan: gunakan kaedah isih, dalam tertib menaik.
Bandingkan tatasusunan: Bandingkan sama ada nilai elemen dalam tatasusunan adalah sama melalui kaedah sama.
Cari elemen tatasusunan: Operasi carian binari boleh dilakukan pada tatasusunan yang diisih melalui kaedah Carian binari.
Sila lihat jadual di bawah untuk mendapatkan arahan khusus:
序号 | 方法和说明 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 |
2 | public static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
3 | public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
4 | public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |