อาเรย์

17 August 2016

ในบทนี้ เราจะแนะนำให้คุณได้รู้จักกับอาเรย์ การสร้างและใช้งานอาเรย์ในภาษา 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

บทความนี้เป็นประโยชน์หรือไม่?Yes·No