Home / ພື້ນຖານ Java / ອາເຣ (Array)
ອາເຣ ແມ່ນຫຍັງ?
ອາເຣ (Array) ຄື ປະເພດຂອງຂໍ້ມູນທີ່ສາມາດເກັບຂໍ້ມູນປະເພດດຽວກັນແບບເປັນລຳດັບໄດ້ ໂດຍຂໍ້ມູນນັ້ນຈະຢູ່ໃນຕົວແປຣຕົວດຽວກັນທີ່ເອີ້ນວ່າ ຕົວແປຣອາເຣ ມັນໃຊ້ index ໃນການເຂົ້າເຖິງຂໍ້ມູນ ລອງຄິດວ່າເຮົາມີເລກ 5 ຕົວທີ່ຈະເກັບໃນການຂຽນໂປຣແກຣມ
int n1 = 10;
int n2 = -20;
int n3 = 30;
int n4 = 40;
int n5 = 60;
ການເອົາໃສ່ໃນຕົວແປຣ 5 ຕົວຄົງຈະບໍ່ແມ່ນບັນຫາ ແຕ່ຖ້າຫາກເຮົາມີຂໍ້ມູນຫຼາຍກວ່ານັ້ນ ເຊັ່ນ ຕົວເລກ 100 ຕົວ ແນ່ນອນວ່າອາເຣຈະຊ່ວຍເຮົາໄດ້ສຳລັບເລື່ອງນີ້ ເຮົາມາປ່ຽນຈາກວິທີເດີມເປັນມາໃຊ້ອາເຣໃນການເກັບຂໍ້ມູນແທນ
int[] number = {10, -20, 30, 40, 60};
ໝາຍເຫດ: ຈາກການໃຊ້ອາເຣໃນການເກັບຂໍ້ມູນ ເຮົາຈະພົບວ່າມັນງ່າຍຂຶ້ນຫຼາຍທັງໃນການປະກາດຕົວແປຣພຽງເທື່ອດຽວ ແລະ ການກຳນົດຄ່າໃຫ້ກັບອາເຣເອງ
ຕໍ່ໄປເຮົາຈະມາສ້າງແລະປະກາດອາເຣເພື່ອທີ່ຈະນຳໄປໃຊ້ງານ ການປະກາດອາເຣໃນພາສາ Java ນັ້ນ ສຳລັບຕົວຢ່າງ
type[] name;
type[] name = new type[size];
type[] name = new type[] {value1, value2, ...};
ໝາຍເຫດ: ຈາກຮູບແບບການປະກາດອາເຣນັ້ນ ເຮົາສາມາດເຮັດໄດ້ 3 ແບບ ປະກາດຕົວແປຣຂອງອາເຣ ໂດຍ type ເປັນປະເພດຂອງຂໍ້ມູນ ແລະ ສາມາດເປັນຄາດໄດ້ name ຄືຊື່ຂອງຕົວແປຣອາເຣ ແລະ ໃນບັນທັດຕໍ່ມາເປັນການກຳນົດຂະໜາດ ໂດຍໃຊ້ຄຳສັ່ງ new ແລະ size ເປັນຈຳນວນເຕັມ ໃນບັນທັດສຸດທ້າຍເປັນການກຳນົດຄ່າເລີ່ມຕົ້ນໃຫ້ກັບອາເຣ ໂດຍເຮົາບໍ່ຕ້ອງກຳນົດຂະໜາດ
public class CreateArray {
public static void main(String[] args) {
int[] number = new int[4];
// assign value to array
number[0] = 10;
number[1] = 25;
number[2] = -8;
number[3] = -10;
// Get array size
System.out.println("Array size is " + number.length);
// Read values
System.out.println("number[0] = " + number[0]);
System.out.println("number[1] = " + number[1]);
System.out.println("number[2] + number[3] = " + (number[2] + number[3]));
String[] names = new String[] { "Mateo", "Danny", "Janifer"};
// Using for loop reading from array
for (int i = 0; i < names.length; i++) {
System.out.println("names[" + i + "] = " + names[i]);
}
}
}
ໃນຕົວຢ່າງ ເຮົາໄດ້ປະກາດອາເຣຊື່ວ່າ number ທີ່ເກັບຂໍ້ມູບປະເພດ int ຂະໜາດເທົ່າກັບ 4 ເຮົາສາມາດເຂົ້າເຖິງອາເຣໄດ້ດ້ວຍ index ຂອງມັນ ໃນຮູບແບບ number[index] ໂດຍ index ຂອງອາເຣນັ້ນ ຈະເຣີ່ມຕັ້ງແຕ່ 0 ນັ້ນໝາຍຄວາມວ່າສະມາຊິກຕົວສຸດທ້າຍຈະມີ Index ນ້ອຍກວ່າຂະໜາດຈິງຢູ່ 1 ຄ່າ
System.out.println("Array size is " + number.length);
ຄໍາສັ່ງສະແດງຜົນຂະໜາດຂອງອາເຣ ໂດຍໃຊ້ property length
String[] names = new String[] { "Mateo", "Danny", "Janifer"};
// Using for loop reading from array
for (int i = 0; i < names.length; i++) {
System.out.println("names[" + i + "] = " + names[i]);
}
ເປັນການປະກາດ ອາເຣຢົ໌ບະເພດ String ໃນການເກັບຊື່ເຊິ່ງມັນມີຂະໜາດເປັນ 3 ໃນຕອນນີ້ເຮົາຈະໃຊ້ຄຳສັ່ງ For loop ໃນການອ່ານຄ່າຈາກອາເຣ ໂດຍເຮົາໃຊ້ i ເປັນ index
Array size is 4
number[0] = 10
number[1] = 25
number[2] + number[3] = -18
names[0] = Mateo
names[1] = Danny
names[2] = Jenifer
ໝາຍເຫດ: ໃນການປະກາດຕົວແປຣອາເຣ ຖ້າຫາກເຮົາກຳນົດຄ່າເລີ່ມຕົ້ນໃຫ້ກັບມັນດ້ວຍ ເຮົາສາມາດປະກາດແບບສັ້ນໄດ້ດັ່ງນີ້
int[] number = { 2, 11, 15, 18, 22, 27, 16, 30 }; // shorter version
int[] number = new int[] { 2, 11, 15, 18, 22, 27, 16, 30 };
ໃນພາສາ Java ອາເຣສາມາດສ້າງຂື້ນໃນຮູບແບບສອງມິຕິໄດ້ ໂດຍອາເຣຢົ໌ສອງມິຕິນັ້ນຈະຄ້າຍຄືການເກັບຄ່າໃນຕາຣາງທີ່ມີແຖວ ແລະ ຖັນ ໂດຍຮູບແບບການປະກາດອາເຣສອງມິຕິເປັນດັ່ງນີ້
type [][] name = new type[ROW][COLUMN];
ໃນການປະກາດອາເຣ 2 ມິຕິນັ້ນ ນັ້ນຈະຄ້າຍກັບອາເຣ 1 ມິຕິ ແຕ່ມັນຈະໃຊ້ເຄື່ອງໝາຍ [ ][ ] ໂດຍແຕ່ລະຄູ່ນັ້ນສະແດງສຳລັບແຖວ ແລະ ຄໍຖັນໂດຍ ROW ຄືຈຳນວນຂອງແຖວຂອງອາເຣ ແລະ COLUMN ຫລື ຂະໜາດຖັນຂອງອາເຣ ດັ່ງນັ້ນຈຳນວນສະມາຊິກຂອງມັນຈຶ່ງເປັນ ROW * COLUMN ມາເບິ່ງຕົວຢ່າງການປະກາດອາເຣ 2 ມິຕິໃນພາສາ Java
int [][] number = new int[4][4];
char [][] c = new char[][] { {'A', 'B', 'C'}, {'D', 'E', 'F'} };
ຕໍ່ໄປແມ່ນເປັນການປະກາດອາເຣ 2 ມິຕິ ຂັ້ນຕອນທຳອິດປະກາດອາເຣສຳລັບເກັບຄ່າຂອງ Integer ໂດຍມີຂະໜາດເປັນ 4 x 4 ເຮົາສາມາດກຳນົດຄ່າເລີ່ມຕົ້ນໃຫ້ກັບມັນໄດ້ ແລະ ຖ້າຫາກຄ່າເລີ່ມຕົ້ນຖືກກຳນົດ ບໍ່ຕ້ອງໃສ່ຂະໜາດຂອງມັນ ຄືກັບບັນທັດຕໍ່ມາ
public class TwoDimensionArray {
public static void main(String[] args) {
final int ROW = 3, COLUMN = 4;
int score[][] = new int[ROW][COLUMN];
int data = 5;
// Assigning values
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COLUMN; j++) {
score[i][j] = data;
data += 5;
}
}
// Printing array
System.out.println("Array");
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COLUMN; j++) {
System.out.print("\t" + score[i][j]);
}
System.out.println();
}
// Printing array's transpose
System.out.println("Transpose array");
for (int i = 0; i < COLUMN; i++) {
for (int j = 0; j < ROW; j++) {
System.out.print("\t" + score[j][i]);
}
System.out.println();
}
// Find a summation and an average
int sum = 0;
for (int i = 0; i < COLUMN; i++) {
for (int j = 0; j < ROW; j++) {
sum += score[j][i];
}
}
System.out.println("Array's sum = " + sum);
System.out.println("Array's avg = " + (float)(sum) / (ROW * COLUMN));
}
}
ໃນໂຄ້ດຕົວຢ່າງເປັນການສ້າງອາເຣ 2 ມິຕິ ທີ່ມີຂະໜາດ 3 x 4 ດັ່ງນັ້ນ ເຮົາໄດ້ໃຊ້ Nested For loop ໃນການກຳນົດຄ່າໃຫ້ກັບອາເຣ ໂດຍເລີ່ມໃຫ້ຄ່າທຳອິດເປັນ 5 ແລະ ເພີ່ມຄ່າຂຶ້ນເລື້ອຍໆ ຈາກຕົວແປຣ data ໂດຍລູບດ້ານນອກຈະເປັນ ROW ແລະ ລູບດ້ານໃນຈະເປັນ COLUMN ເຮົາຮັບຄ່າ ແລະ ສະແດງຜົນຂອງມັນອອກທາງຈໍພາບປົກກະຕິ ຕໍ່ມາເຮົາສະແດງ Transpose ຂອງອາເຣ ເຮົາສັງເກດວ່າໃນຕອນນີ້ ເຮົາໃຊ້ COLUMN ເປັນລູບດ້ານນອກແທນ
for (int i = 0; i < COLUMN; i++) {
for (int j = 0; j < ROW; j++) {
.......
ແລະນອກຈາກນີ້ ເຮົາຢັງຫາຜົນທັງຫມົດຂອງອາເຣ ແລະ ເກັບໃນຕົວແປຣ sum ແລະ ຫາຄ່າສະເລີ່ຍຂອງມັນ
Array
5 10 15 20
25 30 35 40
45 50 55 60
Transpose array
5 25 45
10 30 50
15 35 55
20 40 60
Array's sum = 390
Array's avg = 32.5
ເຮົາສາມາດປະກາດອາເຣ 3 ມິຕິ 4 ມິຕິ ແລະ 5 ມິຕິໄດ້ຕາມທີ່ເຮົາຕ້ອງການ ໂດຍການເພີ່ມເຄື່ອງໝາຍ [ ] ແຕ່ຢ່າງໃດກໍ່ຕາມໃນການຂຽນໂປຣແກຣມ ເຮົາມັກຈະໃຊ້ງານຫຼາຍທີ່ສຸດ 3 ມິຕິ ເຮົາສາມາດປະກາດອາເຣຫຼາຍມິຕິໄດ້ດັ່ງຕົວຢ່າງຂ້າງລຸ່ມ
int[][][] threeDimension = new int[3][4][5];
int[] ... [] multiDimension = new int[dim_1] ... [dim_n];