List, Vector, Set, Map
Koleksi teras
List, Vector, Set, Map ialah pelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian merangkumi sejumlah 4 pelajaran.
Koleksi teras Scala
Scala menyediakan beberapa koleksi tidak berubah dalam pustaka piawainya. Empat koleksi yang paling kerap anda gunakan ialah List, Vector, Set, dan Map. Setiap satunya mempunyai prestasi dan semantik yang berbeza.
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: senarai terpaut
List ialah senarai terpaut sehala. Menambah pada permulaan dengan :: mengambil O(1) dan pantas, tetapi capaian rawak dan penambahan pada akhir mengambil O(n). Ia sesuai untuk rekursi dan penggunaan seperti tindanan.
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: seimbang dan umum
Vector ialah jujukan berindeks dengan capaian, pengemaskinian, penambahan pada permulaan dan penambahan pada akhir yang secara praktiknya mengambil O(1). Apabila anda memerlukan capaian rawak yang pantas atau jujukan serba guna, utamakan Vector berbanding 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: unsur unik
Set menyimpan unsur berbeza tanpa pendua dan tanpa urutan yang dijamin. Ujian keahlian dengan contains adalah pantas.
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)
}
}Operasi Set
Set menyokong operasi matematik: union (|), intersect (&), dan 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: pasangan kunci-nilai
Map mengaitkan kunci dengan nilai. Kunci adalah unik. Cipta entri dengan anak panah ->, dan cari nilai dengan get (mengembalikan Option) atau 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))
}
}Mengemas kini Map secara tidak berubah
Map tidak berubah mengembalikan map baharu apabila anda menambah atau membuang entri; map asal tidak berubah. Gunakan + untuk menambah atau menulis ganti, dan - untuk membuang.
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)
}
}Melakukan lelaran terhadap Map
Melakukan lelaran terhadap Map memberikan tupel kunci-nilai. Anda boleh memecah strukturnya secara terus dalam pemahaman-for atau dengan padanan corak.
object Main {
def main(args: Array[String]): Unit = {
val scores = Map("math" -> 90, "art" -> 75)
for ((subject, score) <- scores) {
println(s"$subject: $score")
}
}
}Kaedah lazim yang dikongsi oleh semua koleksi
Semua koleksi ini berkongsi API umum yang luas: size, isEmpty, map, filter, foreach, dan banyak lagi. Pelajari API itu sekali dan gunakannya di mana-mana.
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))
}
}Menukar antara koleksi
Kaedah penukaran seperti toList, toVector, toSet, dan toMap membolehkan anda menukar jenis dengan mudah. Penukaran kepada Set membuang pendua.
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)
}
}Memilih koleksi yang sesuai
Panduan ringkas:
List— rekursi, penambahan pada permulaan yang pantas, pemprosesan kepala/ekorVector— serba guna, capaian berindeks yang pantasSet— keunikan dan ujian keahlianMap— carian berasaskan kunci
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)}")
}
}Semakan Pantas
Koleksi manakah yang membuang unsur pendua secara automatik?
Imbas Kembali
Anda telah mengenali koleksi teras Scala yang tidak berubah:
- List — senarai terpaut, penambahan pada permulaan yang pantas
- Vector — berindeks, prestasi yang seimbang
- Set — unsur unik dengan algebra set
- Map — carian kunci-nilai dengan
get/getOrElse
Koleksi ini berkongsi API umum yang kaya dan boleh ditukar antara satu sama lain dengan mudah.
Pelajari Scala dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 39
- Pelajaran
- 143
Soalan Lazim
Adakah pelajaran “List, Vector, Set, Map” percuma?
Ya — teks penuh “List, Vector, Set, Map” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian, tingkat taraf kepada CoddyKit PRO. Kursus Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “List, Vector, Set, Map”?
Koleksi teras Anda berlatih Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “List, Vector, Set, Map” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian ini?
Ya. Setiap pelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- List, Vector, Set, Map
- Transformasi
- Pelipatan dan Pengurangan
- Pengumpulan dan Pengisihan