อาร์เรย์ (Array)
อาร์เรย์ (Array) หรือแถวลำดับ คือ ตัวแปรประเภทหนึ่งที่มีดัชนีกำกับตัวแปร ทำให้ตัวแปรเพียงตัวเดียวสามารถถูกเรียกใช้ได้หลายค่า โดยเรียกแต่ละค่าว่าสมาชิกย่อย และเก็บค่าได้แตกต่างกันตามค่าดัชนีที่กำกับสมาชิกย่อย แต่การกำหนดจำนวนดัชนีมีข้อจำกัด ตามขนาดของหน่วยความจำที่ระบบจะรับได้ ข้อมูลจะเก็บในรูปวัตถุแล้วมีตัวชี้ (Pointer) เพื่อชี้ไปยังสมาชิกย่อยแต่ละตัว จึงต้องจำกัดจำนวนสมาชิกให้อยู่ในขอบเขตตั้งแต่ครั้งแรกที่เริ่มต้นจองหน่วยความจำ
กรณีที่ 1 int s1[] = new int[10000]; ใช้พื้นที่ 40,016 Bytes
กรณีที่ 2 int s2[] = new int[10000]; ถ้าประกาศทั้ง s1 และ s2 จะใช้พื้นที่ 80,032 Bytes
กรณีที่ 3 int s3[] = new int[20000]; ใช้พื้นที่ 80,016 Bytes
กรณีที่ 4 long s4[] = new long[20000]; ใช้พื้นที่ 160,016 Bytes
ตัวอย่างข้อมูลในอาร์เรย์
0 | 1 | 2 | 3 | 4 | 5 |
abcd | def | ghijk | jkl | xyz | eee |
ตัวอย่าง 6.1 ประกาศตัวแปรอาร์เรย์ กำหนดค่า และเรียกมาแสดงผล
int x[] = {4,18,12};
System.out.println(“Amount of array = ” + x.length);
for (int i = 0; i < x.length; i++) {
System.out.println(“element “+i+” = “+x[i]);
}
ตัวอย่าง 6.2 การจัดเรียงข้อมูลในอาร์เรย์
int a[] = {5,-1,2};
java.util.Arrays.sort(a);
for (int i = 0; i < a.length; i++) System.out.print(a[i]); // – 125
String b[] = {“aa”,”Za”,”12″};
java.util.Arrays.sort(b);
for (int i = 0; i < b.length; i++) System.out.print(b[i]); // 12Zaaa
ตัวอย่าง 6.3 ตรวจสอบหน่วยความจำเมื่อใช้อาร์เรย์
Runtime r = Runtime.getRuntime();
r.gc();
System.out.println(r.totalMemory()); // 5177344
long f1 = r.freeMemory(); // can not use int
int s[] = new int[10000];
r.gc();
try{
Thread.currentThread().sleep(1000); //sleep for 1000 ms
} catch(Exception e) { }
System.out.println(f1 – r.freeMemory()); // 40016
}
ตัวอย่าง 6.4 จัดการกับอาร์เรย์ 2 มิติแบบคงที่
String a[][] = new String[2][3];
a[0][0] = “101”;
a[0][1] = “102”;
a[0][2] = “103”;
int i = 0;
a[1][i++] = “tom”; // 1,0
a[1][i++] = “dang”; // 1,1
a[1][i++] = “boy”; // 1,2
for (i = 0; i < a[0].length; i++) {
System.out.println(“element of 0,”+i+” = “+a[0][i]);
}
for (i = 0; i < a[1].length; i++) {
System.out.println(“element of 1,”+i+” = “+a[1][i]);
}