อาเรย์
ในบทนี้ เราจะแนะนำให้คุณได้รู้จักกับอาเรย์ การสร้างและใช้งานอาเรย์ในภาษา Java การใช้งานอาเรย์กับคำสั่ง For loop
อาเรย์ คืออะไร
อาเรย์ (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
เป็นจำนวนเต็ม ในบรรทัดสุดท้ายเป็นการกำหนดค่าเริ่มต้นให้กับอาเรย์ โดยเราไม่ต้องกำหนดขนาด
มาดูตัวอย่างการใช้งานอาเรย์ในภาษา Java
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
และเราทำการแสดงผลข้อมูลจากอาเรย์ด้วย index ของมัน
String[] names = new String[] { "Mateo", "Danny", "Jenifer"};
// 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 };
อาเรย์ 2 มิติ
ในภาษา 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 มิติ และอาเรย์หลายมิติ
และแน่นอน คุณสามาถประกาศอาเรย์ 3 มิติ 4 มิติ และ 5 มิติได้ตามที่คุณต้องการ โดยการเพิ่มเครื่องหมาย []
แต่อย่างไรก็ตามในการเขียนโปรแกรม เรามักจะใช้งานมากที่สุด 3 มิติ คุณสามารถประกาศอาเรย์หลายมิติได้ดังตัวอย่างข้างล่าง
int[][][] threeDimension = new int[3][4][5];
int[] ... [] multiDimension = new int[dim_1] ... [dim_n];
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับอาเรย์ในภาษา Java เพื่อเก็บข้อมูลประเภทเดียวกันคราวละมากๆ และการใช้งานอาเรย์ทั้ง 1 มิติ และ 2 มิติ นอกจากนี้ยังทราบว่าอาเรย์นั้นจะทำงานได้ดีกับคำสั่ง For loop