Maps

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

Jim White

Java Developer

Maps คือตาราง lookup

  • Maps ทำหน้าที่เป็นโครงสร้างข้อมูลแบบตาราง lookup
    • เก็บ "value" ไว้ที่ "key" ที่กำหนด
    • ใช้ "key" เพื่อดึง "value" ที่เก็บไว้
  • ตัวอย่าง: โทรหาคลินิก
    • เจ้าหน้าที่จะค้นหาประวัติสุขภาพ (ออบเจกต์ value) จากชื่อ/วันเกิด (ซึ่งเป็น key)

Maps ทำหน้าที่เป็นโครงสร้าง lookup เช่นเดียวกับการโทรหาคลินิกแล้วถูกถามชื่อและวันเกิดเพื่อค้นหาประวัติสุขภาพ

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

อินเทอร์เฟซ Map

  • อินเทอร์เฟซ Map กำหนดการดำเนินการบนคู่ key-value
    • วิธีเก็บหรือ "put" ค่าลงใน store ที่ key ที่กำหนด
    • วิธี "remove" ค่าที่ key นั้นออกจาก Map
    • วิธีดึงค่าจาก key ที่ระบุ
  • มีหลาย implementation ของ Map ที่มีพฤติกรรมใกล้เคียงกัน
    • HashMap เป็น implementation ที่ได้รับความนิยม
1 ดูรายละเอียดได้ที่ https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

key และ value ของ HashMap

key และ value ของ Map หรือ HashMap อาจเป็นชนิดเดียวกันหรือต่างกันก็ได้

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

การสร้าง HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • constructor แบบกำหนด generic type ของ HashMap ต้องการ สองชนิด

    • ชนิดแรก = ชนิดของ key

      พารามิเตอร์ generic ตัวแรกของ HashMap ใช้สำหรับ key

    • ชนิดที่สอง = ชนิดของ value

      พารามิเตอร์ generic ตัวที่สองของ HashMap ใช้สำหรับ value

ชนิดของ key และ value ใน generics กำหนดชนิดข้อมูลสำหรับ key และ value

  • ต้อง import java.util.HashMap
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

เมธอดของ HashMap

  • ใช้ .put(key,value) เพื่อเพิ่มคู่ key/value ลงในตาราง
  • ใช้ .remove(key) เพื่อลบคู่ key/value ที่ key นั้น
  • ใช้ .get(key) เพื่อดึงค่าจากตารางที่ key ที่กำหนด
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Collections

  • java.util.Collections เป็นคลาสช่วยเสริม
  • ใช้สำหรับการเรียงลำดับ เติม คัดลอก ค้นหา และอื่น ๆ
    • มีเฉพาะเมธอดแบบ static
1 ดูรายละเอียดได้ที่ https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

เมธอดของ Collection

  • เพิ่มออบเจกต์หลายรายการลงใน List
    • addAll(List list, Object a, b, ...)
  • คืนค่าจำนวนครั้งที่ออบเจกต์ปรากฏใน collection
    • frequency(Collection c, Object o)
  • สลับลำดับออบเจกต์ใน List
    • reverse(List list)
  • เรียงลำดับออบเจกต์ใน List
    • sort(List list)
  • แทนที่ออบเจกต์ทั้งหมดใน List ด้วยออบเจกต์อื่น
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

Arrays

  • บางครั้งจำเป็นต้องแปลง array (เช่น int[]) ให้เป็น List
    • array ใน Java ปรับขนาดไม่ได้ และอาจต้องเพิ่มหรือลดจำนวนสมาชิก
    • List มีความสามารถมากกว่า (ค้นหา เรียงลำดับ ฯลฯ)
  • java.util.Arrays เป็นอีกหนึ่งคลาสช่วยเสริม
    • ช่วยแปลง array ของ Java ให้เป็น List
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

ตัวอย่างการใช้ Arrays

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java

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

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

Preparing Video For Download...