List, Vector, Set, Map
คอลเลกชันหลัก
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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- List, Vector, Set, Map
- การแปลงข้อมูล
- การพับและการลดค่า
- การจัดกลุ่มและการเรียงลำดับ