รายการสกาล่า (รายการ)
รายการสกาล่า (รายการ)
รายการ Scala คล้ายกับอาร์เรย์พวกเขาเป็นประเภทเดียวกันขององค์ประกอบทั้งหมด แต่พวกเขาจะแตกต่างกัน: รายการจะไม่เปลี่ยนรูปค่าไม่สามารถเปลี่ยนแปลงได้เมื่อพวกเขามีการกำหนดไว้ตามด้วยรายการที่มีโครงสร้าง recursive (นั่นคือโครงสร้างของตารางการเชื่อมโยง) และอาร์เรย์ เลขที่ .
ประเภทส่วนประกอบ T สามารถเขียนเป็นรายการของรายการ [T] ตัวอย่างต่อไปนี้จะแสดงรายการของประเภทต่างๆ:
// 字符串列表 val site: List[String] = List("w3big", "Google", "Baidu") // 整型列表 val nums: List[Int] = List(1, 2, 3, 4) // 空列表 val empty: List[Nothing] = List() // 二维列表 val dim: List[List[Int]] = List( List(1, 0, 0), List(0, 1, 0), List(0, 0, 1) )
โครงสร้างหน่วยพื้นฐานของสองรายการเป็นศูนย์และ ::
ศูนย์นอกจากนี้ยังสามารถแสดงเป็นรายการที่ว่างเปล่า
เราสามารถเขียนตัวอย่างข้างต้นมีดังนี้
// 字符串列表 val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) // 整型列表 val nums = 1 :: (2 :: (3 :: (4 :: Nil))) // 空列表 val empty = Nil // 二维列表 val dim = (1 :: (0 :: (0 :: Nil))) :: (0 :: (1 :: (0 :: Nil))) :: (0 :: (0 :: (1 :: Nil))) :: Nil
รายการของการดำเนินงานขั้นพื้นฐาน
รายการ Scala มีสามดำเนินงานพื้นฐาน:
-
head
กลับองค์ประกอบแรกของรายการ -
tail
กลับรายการที่มีนอกเหนือไปจากองค์ประกอบอื่น ๆ ขององค์ประกอบแรก -
isEmpty
ผลตอบแทนจริงถ้ารายการเป็นที่ว่างเปล่า
สำหรับรายชื่อ Scala การดำเนินการใด ๆ ที่สามารถใช้ในการแสดงทั้งสามดำเนินงานขั้นพื้นฐาน ตัวอย่างมีดังนี้
object Test { def main(args: Array[String]) { val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) val nums = Nil println( "第一网站是 : " + site.head ) println( "最后一个网站是 : " + site.tail ) println( "查看列表 site 是否为空 : " + site.isEmpty ) println( "查看 nums 是否为空 : " + nums.isEmpty ) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : List(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
รายการการเชื่อมต่อ
คุณสามารถใช้::: ผู้ประกอบการหรือรายการ. :: :() วิธีการหรือList.concat () วิธีการที่จะเชื่อมต่อสองคนหรือมากกว่ารายการ ตัวอย่างมีดังนี้
object Test { def main(args: Array[String]) { val site1 = "w3big" :: ("Google" :: ("Baidu" :: Nil)) val site2 = "Facebook" :: ("Taobao" :: Nil) // 使用 ::: 运算符 var fruit = site1 ::: site2 println( "site1 ::: site2 : " + fruit ) // 使用 Set.:::() 方法 fruit = site1.:::(site2) println( "site1.:::(site2) : " + fruit ) // 使用 concat 方法 fruit = List.concat(site1, site2) println( "List.concat(site1, site2) : " + fruit ) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ vim Test.scala $ scala Test.scala site1 ::: site2 : List(w3big, Google, Baidu, Facebook, Taobao) site1.:::(site2) : List(Facebook, Taobao, w3big, Google, Baidu) List.concat(site1, site2) : List(w3big, Google, Baidu, Facebook, Taobao)
List.fill ()
เราสามารถใช้ List.fill () วิธีการสร้างตามจำนวนที่ระบุของการเกิดซ้ำของรายการขององค์ประกอบ:
object Test { def main(args: Array[String]) { val site = List.fill(3)("w3big") // 重复 w3big 3次 println( "site : " + site ) val num = List.fill(10)(2) // 重复元素 2, 10 次 println( "num : " + num ) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ vim Test.scala $ scala Test.scala site : List(w3big, w3big, w3big) num : List(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
List.tabulate ()
List.tabulate () วิธีการใช้ในการสร้างรายการโดยฟังก์ชั่นที่กำหนด
อาร์กิวเมนต์แรกคือจำนวนขององค์ประกอบซึ่งสามารถเป็นสองมิติพารามิเตอร์ตัวที่สองสำหรับการทำงานที่ระบุเราคำนวณผลโดยการระบุการทำงานและผลตอบแทนที่คุ้มค่าที่ใส่ลงในรายการค่าเริ่มต้นเป็น 0 ตัวอย่างดังต่อไปนี้:object Test { def main(args: Array[String]) { // 通过给定的函数创建 5 个元素 val squares = List.tabulate(6)(n => n * n) println( "一维 : " + squares ) // 创建二维列表 val mul = List.tabulate( 4,5 )( _ * _ ) println( "多维 : " + mul ) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ vim Test.scala $ scala Test.scala 一维 : List(0, 1, 4, 9, 16, 25) 多维 : List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12))
List.reverse
ลำดับ List.reverse สำหรับรายชื่อฤๅษีตัวอย่างดังต่อไปนี้:
object Test { def main(args: Array[String]) { val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) println( "site 反转前 : " + site ) println( "site 反转前 : " + site.reverse ) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ vim Test.scala $ scala Test.scala site 反转前 : List(w3big, Google, Baidu) site 反转前 : List(Baidu, Google, w3big)
Scala รายการวิธีการทั่วไป
ตารางต่อไปนี้แสดงวิธีการทั่วไป Scala รายการ:
เลขที่ | วิธีการและรายละเอียด |
---|---|
1 | def + :( ELEM: A): รายการ [A] เพิ่มในรายการก่อนองค์ประกอบที่ scala> val x = List(1) x: List[Int] = List(1) scala> val y = 2 +: x y: List[Int] = List(2, 1) scala> println(x) List(1) |
2 | พลังป้องกัน: :( X: A): รายการ [A] ในการเริ่มต้นของรายการที่จะเพิ่มองค์ประกอบ |
3 | def :: :( คำนำหน้า: รายการ [A ]): รายชื่อ [A] ในการเริ่มต้นของรายการที่จะเพิ่มองค์ประกอบรายการที่ระบุ |
4 | พลังป้องกัน: + (ELEM: A) : รายชื่อ [A] หลังจากที่คุณคัดลอกรายการเพื่อเพิ่มองค์ประกอบ scala> val a = List(1) a: List[Int] = List(1) scala> val b = a :+ 2 b: List[Int] = List(1, 2) scala> println(a) List(1) |
5 | def addString (B: StringBuilder): StringBuilder เพิ่มองค์ประกอบทั้งหมดของรายการเพื่อ StringBuilder |
6 | def addString (B: StringBuilder ก.ย. : String): StringBuilder เพิ่มองค์ประกอบทั้งหมดของรายการเพื่อ StringBuilder และระบุตัวคั่น |
7 | def ใช้ (N: int): ได้รับรายชื่อขององค์ประกอบโดยดัชนี |
8 | def มี (ELEM: ใด ๆ ): บูลีน ตรวจหาว่ารายการมีองค์ประกอบที่ระบุ |
9 | def copyToArray (XS อาร์เรย์ [A ] เริ่มต้น: Int เลน: int): หน่วย สำเนาองค์ประกอบของรายการเป็นอาร์เรย์ |
10 | def ที่แตกต่าง: รายการ [A] ลบองค์ประกอบที่ซ้ำกันของรายการและผลตอบแทนรายการใหม่ |
11 | def ลดลง (N: int): รายการ [A] ยกเลิกองค์ประกอบ n แรกและส่งกลับรายการใหม่ |
12 | def dropRight (N: int): รายการ [A] ยกเลิกองค์ประกอบ n ที่ผ่านมาและส่งกลับรายการใหม่ |
13 | def dropWhile (P: (A) => บูลีน): รายชื่อ [A] องค์ประกอบยกเลิกซ้ายไปขวาจนอยู่ในสภาพที่ไม่พอใจ P |
14 | def endsWith [b] (ที่: ลำดับ [b]): บูลีน การตรวจสอบไม่ว่าจะเป็นรายการที่ส่วนท้ายของลำดับที่ระบุ |
15 | def เท่ากับ (ที่: ใด ๆ ): บูลีน ตรวจสอบว่าเดียวกัน |
16 | def อยู่ (P: (A) => บูลีน): บูลีน การวิเคราะห์เงื่อนไขที่ระบุในรายการขององค์ประกอบที่มีอยู่ L ตรวจสอบว่ามีเป็นองค์ประกอบ: scala> l.exists(s => s == "Hah") res7: Boolean = true |
17 | def กรอง (P: (A) => บูลีน): รายชื่อ [A] ทุกองค์ประกอบของสภาพสัญลักษณ์ระบุเอาท์พุท ความยาวของไส้กรองที่ 3: scala> l.filter(s => s.length == 3) res8: List[String] = List(Hah, WOW) |
18 | def forall (P: (A) => บูลีน): บูลีน การตรวจหาองค์ประกอบทั้งหมด ตัวอย่างเช่นการตรวจสอบว่าทุกองค์ประกอบของ "H" ที่เริ่มต้น: Scala> l.forall (s => s.startsWith ( "H")) res10: บูลีน = false |
19 | def foreach (F: (A) => หน่วย): หน่วย องค์ประกอบทั้งหมดของฟังก์ชั่นในรายการ |
20 | หัว def: การ ได้รับองค์ประกอบแรกของรายการ |
21 | def indexOf (ELEM: จาก : int): Int ค้นหาสถานที่ตั้งของเกิดขึ้นครั้งแรกขององค์ประกอบจากสถานที่ที่ระบุจาก |
22 | init def: รายการ [A] ผลตอบแทนที่ได้องค์ประกอบทั้งหมดยกเว้นคนสุดท้าย |
23 | def ตัด (ว่าลำดับ [A ]): รายชื่อ [A] การคำนวณส่วนใหญ่ของจุดตัดของชุดที่ |
24 | def isEmpty: บูลีน ตรวจหาว่ารายการว่างเปล่า |
25 | def iterator: Iterator [A] สร้าง iterator ใหม่ย้ำองค์ประกอบ |
26 | def ล่าสุด: เป็น ผลตอบแทนที่ได้องค์ประกอบที่ผ่านมา |
27 | def lastIndexOf (ELEM: A, สิ้นสุด : int): Int ในตำแหน่งที่ระบุตำแหน่งที่สิ้นสุดเริ่มต้นมองหาเกิดขึ้นครั้งล่าสุดขององค์ประกอบ |
28 | ความยาวพลังป้องกัน: Int กลับไปที่ความยาวรายการ |
29 | def map [b] (F: (A) => b): รายการ [b] โดยวิธีการที่กำหนดจะคำนวณทุกองค์ประกอบ |
30 | แม็กซ์ def: การ หาองค์ประกอบสูงสุด |
วันที่ 31 | นาที def: การ หาองค์ประกอบที่เล็กที่สุด |
32 | def mkString: String แสดงรายการขององค์ประกอบทั้งหมดที่เป็นสตริง |
33 | def mkString (SEP: String): String แยกจะแสดงรายการขององค์ประกอบทั้งหมดเป็นสตริง |
34 | ย้อนกลับ def: รายการ [A] รายการย้อนกลับ |
35 | เรียง def [B>: A] : รายการ [A] รายการเรียงลำดับ |
36 | def startswith [b] (ที่: ลำดับ [b] ชดเชย: int): บูลีน ตรวจหาว่ารายการประกอบด้วยลำดับที่ระบุไว้ในตำแหน่งที่ระบุ |
37 | รวม def: การ คำนวณและคอลเลกชันขององค์ประกอบ |
38 | หาง def: รายการ [A] ผลตอบแทนที่ได้องค์ประกอบทั้งหมดยกเว้นคนแรก |
39 | def ใช้ (N: int): รายการ [A] การแยกองค์ประกอบ n แรกของรายการ |
40 | def takeRight (N: int): รายการ [A] n องค์ประกอบของรายการสกัด |
41 | def toArray อาร์เรย์ [A] รายการไปยังอาร์เรย์ |
42 | def toBuffer [B>: A] : บัฟเฟอร์ [b] กลับบัฟเฟอร์มีรายชื่อขององค์ประกอบทั้งหมด |
43 | def toMap [T, U]: แผนที่ [T, U] รายการแปลงแผนที่ |
44 | def toSeq: ลำดับ [A] รายการแปลงลำดับ |
45 | def toSet [B>: A] : ตั้ง [b] รายการแปลงชุด |
46 | def toString (): String แปลงไปยังรายการสตริง |
วิธีการมากขึ้นในการอ้างถึง เอกสาร API