ตอนที่ 4 Collections เช่น lists, sets และ maps สำหรับ Kotlin

Kotlin Collection เป็นชุดของคลาสและอินเทอร์เฟซสำหรับทำแอพในภาษาโปรแกรม Kotlin ที่ให้วิธีที่มีประสิทธิภาพและรัดกุมมากขึ้นในการจัดการกับคอลเล็กชันของวัตถุ มีฟังก์ชันและการดำเนินการที่หลากหลายเพื่อจัดการคอลเลกชัน เช่น การกรอง (filtering) การแมป (mapping) การเรียงลำดับ (sorting) และการจัดกลุ่ม (grouping)

คลาสคอลเลกชันที่สำคัญบางคลาสใน Kotlin ได้แก่:
  1. List: คอลเลกชันที่มีองค์ประกอบที่เรียงลำดับและอนุญาตให้ทำซ้ำได้
  2. Set: คอลเลกชันที่มีองค์ประกอบเฉพาะและไม่มีลำดับเฉพาะใดๆ
  3. Map: คอลเลกชันที่เก็บคู่ของคีย์-ค่าและไม่อนุญาตให้มีคีย์ที่ซ้ำกัน

นอกจากนี้ Kotlin ยังมีคลาสอื่นๆ ทำหรับการทำแอพที่เกี่ยวข้องกับคอลเลกชัน เช่น Array, Sequence และ Iterable ซึ่งนำเสนอวิธีการจัดการคอลเลกชันต่างๆ โดยรวมแล้ว Kotlin Collection ทำให้กระบวนการจัดการคอลเล็กชันง่ายขึ้น และทำให้ง่ายต่อการรับทำแอพที่กระชับและมีประสิทธิภาพ

คอลเลกชัน List

List คือชุดคำสั่งขององค์ประกอบที่สามารถมีรายการที่ซ้ำกันได้ ใน Kotlin นั้น List เป็นอินเทอร์เฟซที่นำไปใช้โดยหลายคลาส เช่น ArrayList, LinkedList และ ImmutableList ในการสร้าง List ใน Kotlin สามารถใช้ฟังก์ชัน listOf() หรือฟังก์ชัน mutableListOf() หากต้องการเพิ่ม ลบ หรือแก้ไของค์ประกอบในรายการได้ในภายหลัง

// creating a list
val list = listOf("apple", "banana", "orange")
println(list) // output: [apple, banana, orange]


// creating a mutable list
val mutableList = mutableListOf("apple", "banana", "orange")
mutableList.add("pear")
println(mutableList) // output: [apple, banana, orange, pear]

เมื่อสร้าง List แล้วสามารถเข้าถึงองค์ประกอบโดยใช้ค่าดัชนี และยังสามารถวนซ้ำรายการโดยใช้ for loop หรือฟังก์ชัน forEach()

// accessing elements of a list
val list = listOf("apple", "banana", "orange")
println(list[0]) // output: apple

// looping through a list
for (item in list) {
println(item)
} // output: apple banana orange


list.forEach {
println(it)
} // output: apple banana orange

และยังสามารถใช้การดำเนินการต่างๆ กับ List ใน Kotlin เช่น การกรอง (filtering) การแมป (mapping) การลดขนาด (reducing) การเรียงลำดับ (sorting) และการจัดกลุ่ม (grouping)

// filtering a list
val list = listOf("apple", "banana", "orange")
val filteredList = list.filter { it.startsWith("a") }
println(filteredList) // output: [apple]

// mapping a list
val mappedList = list.map { it.toUpperCase() }
println(mappedList) // output: [APPLE, BANANA, ORANGE]

// reducing a list
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.reduce { acc, i -> acc + i }
println(sum) // output: 15

// sorting a list
val sortedList = numbers.sorted()
println(sortedList) // output: [1, 2, 3, 4, 5]

// grouping a list
val words = listOf("apple", "banana", "cherry", "orange", "pear")
val groupedWords = words.groupBy { it.first() }
println(groupedWords) // output: {a=[apple], b=[banana], c=[cherry], o=[orange], p=[pear]}

คอลเลกชัน Set

Set คือชุดขององค์ประกอบที่ไม่ซ้ำแบบไม่มีลำดับ ใน Kotlin นั้น Set คืออินเทอร์เฟซที่นำไปใช้ทำแอพโดยหลายคลาส เช่น HashSet, LinkedHashSet และ TreeSet หากต้องการสร้าง Set ใน Kotlinสามารถใช้ฟังก์ชัน setOf() หรือฟังก์ชัน mutableSetOf() หากต้องการเพิ่ม ลบ หรือแก้ไของค์ประกอบใน Set ได้ในภายหลัง

// creating a set
val set = setOf("apple", "banana", "orange")
println(set) // output: [apple, banana, orange]

// creating a mutable set
val mutableSet = mutableSetOf("apple", "banana", "orange")
mutableSet.add("pear")
println(mutableSet) // output: [apple, banana, orange, pear]

เมื่อสร้าง Set แล้วสามารถเข้าถึงองค์ประกอบโดยใช้ฟังก์ชัน contains() หรือวนซ้ำ Set โดยใช้ลูป for หรือฟังก์ชัน forEach()

// checking if an element is in a set 
val set = setOf("apple", "banana", "orange")
println(set.contains("apple")) // output: true

// looping through a set
for (item in set) {
println(item)
} // output: apple banana orange

set.forEach {
println(it)
} // output: apple banana orange

ยังสามารถใช้การดำเนินการต่างๆ กับ Set ในการทำแอพ Kotlin เช่น การเพิ่มและลบองค์ประกอบ การตัดกัน (intersecting) และการรวมชุด (unioning) และการกรอง (filtering) และการแมปองค์ประกอบ (mapping)

// adding an element to a set 
val set = mutableSetOf("apple", "banana", "orange")
set.add("pear")
println(set) // output: [apple, banana, orange, pear]

// removing an element from a set
set.remove("banana")
println(set) // output: [apple, orange, pear]

// intersecting two sets
val set1 = setOf(1, 2, 3, 4, 5)
val set2 = setOf(3, 4, 5, 6, 7)
val intersectedSet = set1.intersect(set2)
println(intersectedSet) // output: [3, 4, 5]

// unioning two sets
val unionedSet = set1.union(set2)
println(unionedSet) // output: [1, 2, 3, 4, 5, 6, 7]

// filtering a set
val filteredSet = set.filter { it.startsWith("a") }
println(filteredSet) // output: [apple]

// mapping a set
val mappedSet = set.map { it.toUpperCase() }
println(mappedSet) // output: [APPLE, ORANGE, PEAR]

คอลเลกชัน Map

Map คือชุดของคู่คีย์-ค่า โดยที่แต่ละคีย์จะไม่ซ้ำกัน ใน Kotlin Map เป็นอินเทอร์เฟซที่นำไปใช้ทำแอพโดยหลายคลาส เช่น HashMap, LinkedHashMap และ TreeMap ในการสร้าง Map ใน Kotlin สามารถใช้ฟังก์ชัน mapOf() หรือฟังก์ชัน mutableMapOf() หากต้องการเพิ่ม ลบ หรือแก้ไขคู่คีย์-ค่าใน Map ได้ในภายหลัง

// creating a map 
val map = mapOf("apple" to 1, "banana" to 2, "orange" to 3)
println(map) // output: {apple=1, banana=2, orange=3}

// creating a mutable map
val mutableMap = mutableMapOf("apple" to 1, "banana" to 2, "orange" to 3)
mutableMap["pear"] = 4
println(mutableMap) // output: {apple=1, banana=2, orange=3, pear=4}

เมื่อสร้าง Map แล้วสามารถเข้าถึงค่าของมันได้โดยใช้ฟังก์ชัน get() หรือตัวดำเนินการ [] ด้วยค่าคีย์ และยังสามารถวนซ้ำแผนที่โดยใช้ฟังก์ชัน “for” หรือ “forEach()”

// accessing values of a map 
val map = mapOf("apple" to 1, "banana" to 2, "orange" to 3) 
println(map["apple"]) // output: 1

// looping through a map 
for ((key, value) in map) { 
   println("$key -> $value") 
} // output: apple -> 1, banana -> 2, orange -> 3

map.forEach {
   println("${it.key} -> ${it.value}")
} // output: apple -> 1, banana -> 2, orange -> 3

สามารถใช้การดำเนินการต่างๆ กับ Map ใน Kotlin เช่น การเพิ่มและลบคู่คีย์-ค่า การกรอง (filtering) และการจับคู่ค่า (mapping) และการดึงคีย์และค่า (retrieving keys, values)

// adding a key-value pair to a map
val mutableMap = mutableMapOf("apple" to 1, "banana" to 2, "orange" to 3)
mutableMap["pear"] = 4
println(mutableMap) // output: {apple=1, banana=2, orange=3, pear=4}

// removing a key-value pair from a map
mutableMap.remove("banana")
println(mutableMap) // output: {apple=1, orange=3, pear=4}

// filtering values of a map
val filteredMap = mutableMap.filterValues { it > 2 }
println(filteredMap) // output: {orange=3, pear=4}

// mapping values of a map
val mappedMap = mutableMap.mapValues { it.value * 2 }
println(mappedMap) // output: {apple=2, orange=6, pear=8}

// getting keys and values of a map
val keys = mutableMap.keys
println(keys) // output: [apple, orange, pear]

val values = mutableMap.values
println(values) // output: [1, 3, 4]

คอลเลกชันเป็นส่วนสำคัญของการรับทำแอพในโปรแกรม Kotlin โดยได้จัดเตรียมเฟรมเวิร์กการรวบรวมที่แข็งแกร่งและมีประสิทธิภาพ ในบทความนี้ เราได้สำรวจคอลเลกชันหลัก 3 ประเภทใน Kotlin: List, Set และ Map เราได้กล่าวถึงการสร้าง การเข้าถึงองค์ประกอบ การวนรอบองค์ประกอบ และการใช้การดำเนินการกับองค์ประกอบเหล่านั้น

ด้วยการเรียนรู้ Kotlin collection frameworkจะสามารถรับทำแอพที่มีประสิทธิภาพและรัดกุมมากขึ้น และหลีกเลี่ยงข้อผิดพลาดทั่วไปในการทำแอพได้มากมาย ไม่ว่าจะรับทำแอพในโครงการขนาดเล็กหรือใหญ่ คอลเล็กชันจะเป็นส่วนสำคัญของโค้ดเสมอ

KOLTIN ANDROID คืออะไร เริ่มต้น อย่างไร 

ตอนที่ 3 การใช้งานเงื่อนไข (Conditional Expressions)ใน Kotlin
ตอนที่ 5 การใช้งาน Loops ใน Kotlin