By Arnon Puitrakul - 24 ธันวาคม 2014
เมื่อวานเราได้เรียนรู้เกี่ยวกับการ รับข้อมูล และ การเอาข้อมูลออก วันนี้เราจะมาเรียนรู้เกี่ยวกับการเก็บข้อมูลแบบหนึ่งที่ใครๆน่าจะรู้จัก นั่นคือ Array
Array คือ ชุดของตัวแปร ซึ่งตัวแปรที่มาเรียงต่อกันนั้นต้องเป็นข้อมูลชนิดเดียวกัน โดยที่เราสามารถเข้าถึงสามาชิกตัวไหนก็ได้ของ Array
การประกาศ Array นั้นไม่ยาก เพียง
int a [] = {1,4,3};
ใส่ชนิดของตัวแปรแล้วใส่ ปีกกาเปิดปิด แล้วให้ค่ามันโดยตรง
แต่ถ้าเรายังไม่รู้ค่ามัน เราจะ ไม่สามารถ เขียนแบบนี้ได้
int a [2];
จะต้องเขียนเป็น
int a = new int [2];
สังเกตโค๊ตด้านบนนี้ เหมือนกับการสร้าง Object เลยใช่มั้ยครับ จริงๆแล้วมันใช่ เพราะเรามองว่าตัวแปรก็คือ ข้อมูลก้อนนึงเหมือนกัน เหมือนกับที่เรามอง Object เป็นข้อมูลก้อนนึง (ถ้าใคร งง ให้ไปอ่าน EP.2 ก่อนนะครับ ในนั้นเขียนไว้ให้หมดแล้ว)
เอาล่ะเมื่อกี้เรารู้วิธีการสร้าง Array ไปแล้ว เรามาดูวิธีการให้ค่าและการเข้าถึงข้อมูลกัน
เวลาเราจะเข้าถึงข้อมูล เราสามารถเข้าถึงได้ทีล่ะ **Element **(Element = สมาชิก ต่อจากนี้ผมจะใช้คำว่า Element แทน) ถ้าเราต้องการให้ค่ามันก็แค่ สมมุติผมอยากให้ a ตัวที่ 0 เท่ากับ 2 ก็แค่
a[0] = 2;
ง่ายนิดเดียว แต่ถามต่อว่าถ้าเราต้องการให้ค่ามันทั้งหมดเลย เช่นผมอยากให้มันมีค่าเป็น 0 1 2 ไปเรื่อยๆ ทีนี้ผมต้องใช้เรื่องของ Loop เข้ามาช่วยและ (เรื่อง Loop ผมจะไม่อธิบายนะครับเพราะถือว่าควรจะได้แล้ว Syntax เหมือนภาษา C เป๊ะเลย)
for(int i = 0;i< 2;i++)
{
a[i] = i;
}
โค๊ตข้างบนผมบอกว่าให้มันวนลูปตั้งแต่ 0 ถึง 1 แล้วในนั้นผมบอกว่าให้สมาชิกตัวที่ i เท่ากับ i เลย
เพราะฉะนั้น ค่าของ Array ชุดนี้ควรจะเป็น 0 1 ตามลำดับ
ถามต่อ เมื่อกี้เราให้ค่ามันได้แล้ว แล้วเราจะแสดงผลมันยังไงล่ะ
ไม่ยากเลย เราก็ใช้คำสั่ง print ที่เราเรียนมาใน EP.3 แค่
for (int i=0;i<2;i++)
{
System.out.println(a[i]);
}
โค๊ตด้านบนก็คือการให้มันวนลูป เอาค่า a ออกมาทีล่ะค่าปกติเลย ไม่มีอะไร
เอาล่ะถามต่ออีก แล้วถ้าเราไม่รู้ล่ะว่า User จะกรอกจำนวนสมาชิก Array มาเท่าไหร่?
มี 2 วิธีคือ รับค่าจาก User มาเลยว่าจะเอาจำนวน Element ของ Array มาเท่าไหร่ แล้วไปเอาไปแทนในตอนประกาศและตอนวนลูป
แต่มันจะมีอีกวิธีนึง ใน Array มันจะมี Method ตัวนึงอยู่ ชื่อ length ค่าที่ได้ออกมาจากมันคือจำนวน Element ใน Array
สมมุติว่าผมอยูากรู้ว่า Array a มีสมาชิกกี่ตัวผมก็พิมพ์ไปว่า
System.out.println(a.length);
แค่นี้ผมก็จะได้จำนวนสมาชิก Array ออกทางหน้าจอให้เราดูได้แล้ว แต่ถ้าจะเอาค่านี้ไปใช้ได้ก็ได้เหมือนกัน เอาไปปรับกันเอานะ ไม่ยาก (ส่วนเรื่อง Method ของ Array ผมจะไม่พูดต่อล่ะกัน ไม่งั้นเดียวจะยาว)
เรื่องถัดมา เป็นเรื่องย่อยๆของตัว Array นิดหน่อย (ไม่นิดมั่ง) นั่นคือ arrayList
arrayList - มันก็คือ Array นี่แหละ แต่ตอนที่เราใช้ Array เราเคยเจอปัญหาประมาณว่า Array ที่เราประกาศไม่พอมั้ยครับ เจ้านี่แหละมันจะเข้ามาช่วยแก้ปัญหาให้เราได้
**ถามว่าแล้วมันพิเศษกว่า Array ปกติยังไง? **
ArrayList เนี่ยมันไม่ต้องมาระบุจำนวนขนาดเลยเพราะอยากเพิ่มก็เพิ่ม อยากลบก็ลบได้เลย ไม่ต้องแคร์สื่ออะไรทั้งนั้น ส่วนเรื่องขนาด (ขนาดของ Array นะไม่ใช่อย่างอื่น) ก็สามารถเพิ่มได้ไม่จำกัดเลยล่ะ
แต่ก่อนหน้านั้น เราจะต้อง Import ตัวชุดคำสั่งของ ArrayList ก่อน
import java.util.ArrayList;
ส่วนการประกาศก็เหมือนการสร้าง Object หรือไม่ก็การสร้าง Array ด้านบนเลย
ArrayList myArrlis = new ArrayList();
จากด้านบนผมสร้าง ArrayList ชื่อ myArrlis ขึ้นมาตัวนึง ถามต่อว่าเราทำอะไรได้บ้าง
มันจะมี Method อยู่ (เอาที่ใช้บ่อยๆนะ) ดังนี้
เมื่อหลายวันก่อน เราไปทำงานแล้วใช้ Terminal แบบปีศาจมาก ๆ จนเพื่อนถามว่า เราทำยังไงถึงสามารถสลับ Terminal Session ไปมาได้แบบบ้าคลั่งขนาดนั้น เบื้องหลังของผมน่ะเหรอกัปตัน ผมใช้ tmux ยังไงละ วันนี้เราจะมาแชร์ให้อ่านกันว่า มันเอามาใช้งานจริงได้อย่างไร เป็น Beginner Guide สำหรับคนที่อยากลองละกัน...
Firewall ถือว่าเป็นเครื่องมือในการป้องกันภัยขั้นพื้นฐานที่ปัจจุบันใคร ๆ ก็ติดตั้งใช้งานกันอยู่แล้ว แต่หากเรากำลังใช้ Ubuntu อยู่ จริง ๆ แล้วเขามี Firewall มาให้เราใช้งานได้เลยนะ มันชื่อว่า UFW วันนี้เราจะมาทำความรู้จัก และทดลองตั้ง Rule สำหรับการดักจับการเชื่อมต่อที่ไม่เกี่ยวข้องกันดีกว่า...
Obsidian เป็นโปรแกรมสำหรับการจด Note ที่เรียกว่า สารพัดประโยชน์มาก ๆ เราสามารถเอามาทำอะไรได้เยอะมาก ๆ หนึ่งในสิ่งที่เราเอามาทำคือ นำมาใช้เป็นระบบสำหรับการจัดการ Todo List ในแต่ละวันของเรา ทำอะไรบ้าง วันนี้เราจะมาเล่าให้อ่านกันว่า เราจัดการะบบอย่างไร...
อะ อะจ๊ะเอ๋ตัวเอง เป็นยังไงบ้างละ เมื่อหลายเดือนก่อน เราไปเล่าเรื่องกันขำ ๆ ว่า ๆ จริง ๆ แล้วพวก Loop ที่เราใช้เขียนโปรแกรมกันอยู่ มันไม่มีอยู่จริง สิ่งที่เราใช้งานกันมันพยายาม Abstract บางอย่างออกไป วันนี้เราจะมาถอดการทำงานของ Loop จริง ๆ กันว่า มันทำงานอย่างไรกันแน่ ผ่านภาษา Assembly...