Scala for Backend Engineering & Functional Programming · บทเรียน

List, Vector, Set, Map

คอลเลกชันหลัก

บทเรียน 1 จาก 413 ขั้นตอน

List, Vector, Set, Map เป็นบทเรียน Scala for Backend Engineering & Functional Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Scala for Backend Engineering & Functional Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน

คอลเลกชันหลักของ Scala

Scala มีคอลเลกชันแบบเปลี่ยนแปลงไม่ได้หลายชนิดในไลบรารีมาตรฐาน คอลเลกชันสี่ชนิดที่คุณจะใช้บ่อยที่สุดคือ List, Vector, Set และ Map แต่ละชนิดมีประสิทธิภาพและความหมายในการใช้งานแตกต่างกัน

object Main {
  def main(args: Array[String]): Unit = {
    val list = List(1, 2, 3)
    val vector = Vector(1, 2, 3)
    val set = Set(1, 2, 3)
    val map = Map("a" -> 1, "b" -> 2)
    println(list)
    println(vector)
    println(set)
    println(map)
  }
}

List: ลิงก์ลิสต์

List คือลิงก์ลิสต์แบบทิศทางเดียว การเพิ่มสมาชิกไว้ด้านหน้าด้วย :: ใช้เวลา O(1) และทำงานรวดเร็ว แต่การเข้าถึงแบบสุ่มและการเพิ่มสมาชิกท้ายลิสต์ใช้เวลา O(n) เหมาะอย่างยิ่งสำหรับการเรียกซ้ำและการใช้งานในลักษณะสแตก

object Main {
  def main(args: Array[String]): Unit = {
    val xs = List(2, 3, 4)
    val prepended = 1 :: xs
    println(prepended)
    println("head: " + xs.head)
    println("tail: " + xs.tail)
  }
}

Vector: สมดุลและใช้งานทั่วไป

Vector คือลำดับที่มีดัชนี โดยการเข้าถึง การอัปเดต การเพิ่มด้านหน้า และการเพิ่มด้านท้ายมีประสิทธิภาพใกล้เคียง O(1) หากต้องการการเข้าถึงแบบสุ่มที่รวดเร็วหรือลำดับสำหรับใช้งานทั่วไป ให้เลือก Vector แทน List

object Main {
  def main(args: Array[String]): Unit = {
    val v = Vector(10, 20, 30, 40)
    println(v(2))
    val updated = v.updated(0, 99)
    println(updated)
    println(v :+ 50)
  }
}

Set: องค์ประกอบไม่ซ้ำกัน

Set จัดเก็บองค์ประกอบที่แตกต่างกัน โดยไม่มีค่าซ้ำและไม่รับประกันลำดับ การตรวจสอบสมาชิกด้วย contains ทำได้รวดเร็ว

object Main {
  def main(args: Array[String]): Unit = {
    val s = Set(1, 2, 2, 3, 3, 3)
    println(s)
    println(s.contains(2))
    println(s + 4)
    println(s - 1)
  }
}

การดำเนินการกับ Set

เซตรองรับการดำเนินการทางคณิตศาสตร์ ได้แก่ union (|), intersect (&) และ diff (−−)

object Main {
  def main(args: Array[String]): Unit = {
    val a = Set(1, 2, 3)
    val b = Set(2, 3, 4)
    println(a union b)
    println(a intersect b)
    println(a diff b)
  }
}

Map: คู่คีย์และค่า

Map เชื่อมโยงคีย์เข้ากับค่า คีย์จะไม่ซ้ำกัน สร้างรายการด้วยลูกศร -> และค้นค่าด้วย get (คืนค่าเป็น Option) หรือ apply

object Main {
  def main(args: Array[String]): Unit = {
    val ages = Map("Ann" -> 30, "Bob" -> 25)
    println(ages("Ann"))
    println(ages.get("Cara"))
    println(ages.getOrElse("Cara", 0))
  }
}

การอัปเดต Map โดยไม่เปลี่ยนแปลงข้อมูลเดิม

แมปแบบเปลี่ยนแปลงไม่ได้จะคืนค่าแมปใหม่เมื่อคุณเพิ่มหรือลบรายการ ส่วนแมปเดิมจะไม่เปลี่ยนแปลง ใช้ + เพื่อเพิ่มหรือเขียนทับ และใช้ - เพื่อลบ

object Main {
  def main(args: Array[String]): Unit = {
    val m = Map("a" -> 1)
    val m2 = m + ("b" -> 2)
    val m3 = m2 - "a"
    println(m)
    println(m2)
    println(m3)
  }
}

การวนซ้ำผ่าน Map

การวนซ้ำผ่าน Map จะให้ทูเพิลคีย์และค่า คุณสามารถแยกโครงสร้างทูเพิลเหล่านี้โดยตรงใน for-comprehension หรือใช้การจับคู่รูปแบบ

object Main {
  def main(args: Array[String]): Unit = {
    val scores = Map("math" -> 90, "art" -> 75)
    for ((subject, score) <- scores) {
      println(s"$subject: $score")
    }
  }
}

เมธอดทั่วไปที่ใช้ร่วมกันทั้งหมด

คอลเลกชันเหล่านี้มีส่วนติดต่อการเขียนโปรแกรมร่วมกันขนาดใหญ่ ได้แก่ size, isEmpty, map, filter, foreach และอื่น ๆ เรียนรู้ส่วนติดต่อนี้ครั้งเดียว แล้วนำไปใช้ได้กับทุกคอลเลกชัน

object Main {
  def main(args: Array[String]): Unit = {
    println(List(1, 2, 3).map(_ * 2))
    println(Vector(1, 2, 3).map(_ * 2))
    println(Set(1, 2, 3).map(_ * 2))
  }
}

การแปลงระหว่างคอลเลกชัน

เมธอดแปลงประเภท เช่น toList, toVector, toSet และ toMap ช่วยให้คุณเปลี่ยนประเภทได้ง่าย การแปลงเป็น Set จะลบค่าซ้ำออก

object Main {
  def main(args: Array[String]): Unit = {
    val withDupes = List(1, 1, 2, 3, 3)
    println(withDupes.toSet)
    val pairs = List(("a", 1), ("b", 2))
    println(pairs.toMap)
  }
}

การเลือกคอลเลกชันที่เหมาะสม

คู่มือฉบับย่อ:

  • List — การเรียกซ้ำ การเพิ่มด้านหน้าอย่างรวดเร็ว การประมวลผลส่วนหัวและส่วนท้าย
  • Vector — ใช้งานทั่วไป การเข้าถึงตามดัชนีอย่างรวดเร็ว
  • Set — ความไม่ซ้ำกันและการตรวจสอบสมาชิก
  • Map — การค้นหาตามคีย์
object Main {
  def main(args: Array[String]): Unit = {
    val ids = List(5, 3, 5, 1, 3)
    val unique = ids.toSet
    val indexed = ids.toVector
    println(s"unique count: ${unique.size}")
    println(s"third element: ${indexed(2)}")
  }
}

ตรวจสอบอย่างรวดเร็ว

คอลเลกชันใดลบองค์ประกอบที่ซ้ำกันโดยอัตโนมัติ

สรุปทบทวน

คุณได้รู้จักคอลเลกชันแบบเปลี่ยนแปลงไม่ได้หลักของ Scala:

  • List — ลิงก์ลิสต์ เพิ่มสมาชิกด้านหน้าได้รวดเร็ว
  • Vector — มีดัชนี ประสิทธิภาพสมดุลดี
  • Set — องค์ประกอบไม่ซ้ำกัน พร้อมการดำเนินการทางเซต
  • Map — การค้นหาคีย์และค่าด้วย get/getOrElse

คอลเลกชันเหล่านี้มีส่วนติดต่อการเขียนโปรแกรมร่วมกันที่ครบครัน และแปลงไปมาระหว่างกันได้ง่าย

เริ่มต้นได้ฟรี

เรียนรู้ Scala ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
39
บทเรียน
143

คำถามที่พบบ่อย

บทเรียน “List, Vector, Set, Map” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “List, Vector, Set, Map” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Scala for Backend Engineering & Functional Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “List, Vector, Set, Map”

คอลเลกชันหลัก คุณปฏิบัติ Scala for Backend Engineering & Functional Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Scala for Backend Engineering & Functional Programming หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Scala for Backend Engineering & Functional Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “List, Vector, Set, Map” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Scala for Backend Engineering & Functional Programming นี้ได้ไหม

ได้ บทเรียน Scala for Backend Engineering & Functional Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. List, Vector, Set, Map
  2. การแปลงข้อมูล
  3. การพับและการลดค่า
  4. การจัดกลุ่มและการเรียงลำดับ
← กลับไปที่ Scala for Backend Engineering & Functional Programming