Latest web development tutorials

รายการสกาล่า (รายการ)

รายการสกาล่า (รายการ)

คอลเลกชันสกาล่า คอลเลกชันสกาล่า

รายการ 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

คอลเลกชันสกาล่า คอลเลกชันสกาล่า