Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian · Pelajaran

List, Vector, Set, Map

Koleksi teras

Pelajaran 1 daripada 413 langkah

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/ekor
  • Vector — serba guna, capaian berindeks yang pantas
  • Set — keunikan dan ujian keahlian
  • Map — 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.

Percuma untuk bermula

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

  1. List, Vector, Set, Map
  2. Transformasi
  3. Pelipatan dan Pengurangan
  4. Pengumpulan dan Pengisihan
← Kembali ke Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian