โครงสร้างข้อมูลใน Collections Framework

ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Jim White

Java Instructor

Framework คืออะไร

  • Framework คือชุดของ type ที่นำกลับมาใช้ซ้ำได้ เพื่อให้ฟังก์ชันการทำงานทั่วไป
    • ตัวอย่าง type ได้แก่ class และ interface
    • ช่วยเพิ่มคุณภาพของแอปพลิเคชัน
    • ไม่ต้องสร้างทุกอย่างขึ้นมาใหม่ตั้งแต่ต้น
  • Framework ใน Java จะถูกจัดส่งในรูปแบบ package
  • Framework มาพร้อมแนวทางและกฎสำหรับการใช้งาน

Framework มอบชุดโค้ดสำเร็จรูปสำหรับฟังก์ชันการทำงานทั่วไป

1 Photo by Ashkan Forouzani on Unsplash
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Type ใน Java

type ใน Java มี 2 ประเภท:

  • type แบบ Primitive
    • byte, short, int, long, float, double, char, boolean
  • type แบบ Reference
    • Classes
    • Interface
    • Enums
    • Arrays
    • ...
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Collections Framework

  • Collections Framework: ชุด type โครงสร้างข้อมูลทั่วไปที่ Java มีให้ในตัว
    • เป็น package ของ type สำหรับจัดเก็บและจัดการกลุ่มของออบเจกต์
  • กำหนดไว้ใน package java.util
    • ต้องใช้ import เพื่อเรียกใช้ type ใน framework
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

แล้ว array ล่ะ?

  • array ใน Java สามารถเก็บกลุ่มของออบเจกต์หรือ primitive ได้
    • Collections Framework มีชุดโครงสร้างข้อมูลอีกแบบเป็นทางเลือก
  • ทั้งสองแบบมีข้อดีและข้อเสีย
Arrays Collections
ปรับขนาดไม่ได้ ปรับขนาดได้แบบไดนามิก (ขยายและย่อได้)
เก็บ primitive หรือออบเจกต์ เก็บเฉพาะออบเจกต์
Homogeneous - ต้องเป็น type เดียวกัน Heterogeneous - ออบเจกต์ต่างชนิดกันได้
ใช้สัญลักษณ์พิเศษ [] เพื่อเข้าถึงสมาชิก ใช้เมธอดเพื่อเข้าถึงออบเจกต์
ใช้ syntax พิเศษสำหรับการกำหนดค่าเริ่มต้น {} ใช้ new (ไม่มี syntax พิเศษ)
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

ประเภทใน Collections Framework

  • Collections Framework แบ่งออกเป็น 2 ประเภทหลัก: Collection และ Map
    • แทนด้วย 2 interface: java.util.Collection และ java.util.Map
    • ทั้งสองมี class ที่ implement หลายตัว
  • ใช้ import java.util.*; เพื่อเรียกใช้ type ใดก็ได้ใน Collections Framework

Collections Framework มี 2 ประเภทหลัก คือ Collection และ Map

ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Collection

  • Collection กำหนดรูปแบบการจัดกลุ่มออบเจกต์หลายแบบ
    • โดยกำหนดผ่าน interface เพิ่มเติม
  • กลุ่มออบเจกต์แบบมีลำดับ: List
  • กลุ่มออบเจกต์แบบไม่มีลำดับ: Set
  • กลุ่มออบเจกต์แบบเข้าก่อน-ออกก่อน: Queue
    • ทำงานเหมือนคิวที่ธนาคารหรือช่องจำหน่ายตั๋ว
  • ใช้เมธอด .add(Object) และ .remove(Object) เพื่อแก้ไข Collection ใดก็ได้

Collection ประกอบด้วย List, Set และ Map

ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Map

  • โครงสร้างข้อมูล Map ทำงานคล้ายสมุดโทรศัพท์หรือพจนานุกรม
    • ออบเจกต์ "key" -> ออบเจกต์ "value"
    • ในสมุดโทรศัพท์ ชื่อ -> หมายเลขโทรศัพท์
    • ในพจนานุกรม คำ -> ความหมายของคำ
  • ใช้ออบเจกต์ key เพื่อแก้ไข Map
    • .put(Object key, Object value) เพื่อเพิ่มข้อมูลใน Map
    • .remove(Object key) เพื่อลบข้อมูลออกจาก Map
  • Map มีหลายชนิด เช่น HashMap

โครงสร้างข้อมูล Map ทำงานเหมือนสมุดโทรศัพท์หรือพจนานุกรม

ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Generics

  • Collection และ Map เป็น "parameterized"
    • Java generics ใช้เพื่อระบุออบเจกต์ใน Collection หรือ Map
    • syntax ของ generic: <Class> พร้อม parameterized type
      • < > เรียกว่า diamond operator
ArrayList<String> list = new ArrayList<String>();  // Construct with generics
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Generics และ type safety

  • Generics ช่วยให้ type safety ดีขึ้น
    • จำกัดออบเจกต์ที่อนุญาตใน Collection และ Map
ArrayList<String> list = new ArrayList<String>();
list.add("hello");  // Adding a String is ok
list.add(new Integer(5));  // Trying to add an Integrer causes compiler error
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

การไม่ใช้ generics

ArrayList list2 = new ArrayList();  // Legal but non-specific

list2.add("hello");                 // Now any type of object can be added
list2.add(new Integer(5));
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

การประกาศและกำหนดค่าตัวแปร

  • การประกาศตัวแปรและการกำหนดค่าสามารถทำแยกกันได้
ArrayList<String> list = new ArrayList<String>(); //Single line declaration and assignment

ArrayList<String> list2;    // Variable declaration...
list2 = new ArrayList<String>();  //... and assignement can be 2 statements
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

มาฝึกกันเถอะ!

ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Preparing Video For Download...