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 อยู่ (เอาที่ใช้บ่อยๆนะ) ดังนี้
เรื่องราวเกิดจากการที่เราต้องย้าย Add-on Package ใน DSM และคิดว่าหลาย ๆ คนน่าจะต้องประสบเรื่องราวคล้าย ๆ กัน วันนี้เราจะมาเล่าวิธีการว่า เราทำยังไง เจอปัญหาอะไร และ แก้ปัญหาอย่างไรให้ได้อ่านกัน...
การใช้ Docker CLI ในการจัดการ Container เป็นท่าที่เราใช้งานกันทั่วไป มันมีความยุ่งยาก และผิดพลาดได้ง่ายยังไม่นับว่ามี Instance หลายตัว ทำให้เราต้องค่อย ๆ SSH เข้าไปทำทีละตัว มันจะดีกว่ามั้ย หากเรามี Centralised Container Managment ที่มี Web GUI ให้เราด้วย วันนี้เราจะพาไปทำความรู้จักกับ Portainer กัน...
ปกติหากเราต้องการจะเปิดเว็บสักเว็บ เราจำเป็นต้องมี Web Server ตั้งอยู่ที่ไหนสักที่หนึ่ง ต้องใช้ค่าใช้จ่าย พร้อมกับต้องจัดการเรื่องความปลอดภัยอีก วันนี้เราจะมาแนะนำวิธีการที่ง่ายแสนง่าย ปลอดภัย และฟรี กับ Cloudflare Tunnel ให้อ่านกัน...
เวลาเราทำงานกับข้อมูลอย่าง Pandas DataFrame หนึ่งในงานที่เราเขียนลงไปให้มันทำคือ การ Apply Function เข้าไป ถ้าข้อมูลมีขนาดเล็ก มันไม่มีปัญหาเท่าไหร่ แต่ถ้าข้อมูลของเราใหญ่ มันอีกเรื่องเลย ถ้าเราจะเขียนให้เร็วที่สุด เราจะทำได้โดยวิธีใดบ้าง วันนี้เรามาดูกัน...