Latest web development tutorials

Scala Set (คอลเลกชัน)

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

Scala Set (คอลเลกชัน) ไม่ซ้ำชุดของวัตถุองค์ประกอบทั้งหมดที่เป็นเอกลักษณ์

คอลเลกชัน Scala แบ่งออกเป็นคอลเลกชันของตัวแปรและไม่เปลี่ยนรูป

โดยค่าเริ่มต้น Scala ใช้คอลเลกชันที่ไม่เปลี่ยนรูปถ้าคุณต้องการที่จะใช้ตั้งค่าตัวแปรคุณต้องอ้างอิงแพคเกจscala.collection.mutable.Set

scala.collection.immutable.Set อ้างอิงค่าเริ่มต้นชุดเปลี่ยนรูปตัวอย่างมีดังนี้

val set = Set(1,2,3)
println(set.getClass.getName) // 

println(set.exists(_ % 2 == 0)) //true
println(set.drop(1)) //Set(2,3)

หากคุณจำเป็นต้องใช้ชุดตัวแปรต้องแนะนำ scala.collection.mutable.Set:

import scala.collection.mutable.Set // 可以在任何地方引入 可变集合

val mutableSet = Set(1,2,3)
println(mutableSet.getClass.getName) // scala.collection.mutable.HashSet

mutableSet.add(4)
mutableSet.remove(1)
mutableSet += 5
mutableSet -= 2

println(mutableSet) // Set(5, 3, 4)

val another = mutableSet.toSet
println(another.getClass.getName) // scala.collection.immutable.Set

หมายเหตุ: แม้ว่าตัวแปรและไม่เปลี่ยนรูป SET SET ได้เพิ่มหรือลบองค์ประกอบ แต่มีความแตกต่างที่ใหญ่มากการดำเนินการตั้งค่าการเปลี่ยนรูปจะผลิตชุดใหม่ชุดเดิมไม่ได้เปลี่ยนแปลงซึ่งเป็นเช่นเดียวกับรายการ การดำเนินงานของการเปลี่ยนแปลงการตั้งค่าตัวแปรเป็นที่ตั้งตัวเองคล้ายกับ ListBuffer


คอลเลกชันของการดำเนินงานขั้นพื้นฐาน

คอลเลกชัน Scala มีสามดำเนินงานพื้นฐาน:

  • head กลับองค์ประกอบแรกของคอลเลกชัน
  • tail ส่งกลับคอลเลกชันที่มีนอกเหนือไปจากองค์ประกอบอื่น ๆ ขององค์ประกอบแรก
  • isEmpty ผลตอบแทนจริงถ้าคอลเลกชันที่ยังว่างอยู่

การดำเนินการใด ๆ สำหรับคอลเลกชัน Scala สามารถนำมาใช้ในการแสดงทั้งสามดำเนินงานขั้นพื้นฐาน ตัวอย่างมีดังนี้

object Test {
   def main(args: Array[String]) {
      val site = Set("w3big", "Google", "Baidu")
      val nums: Set[Int] = Set()

      println( "第一网站是 : " + site.head )
      println( "最后一个网站是 : " + site.tail )
      println( "查看列表 site 是否为空 : " + site.isEmpty )
      println( "查看 nums 是否为空 : " + nums.isEmpty )
   }
}

การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:

$ vim Test.scala 
$ scala Test.scala 
第一网站是 : w3big
最后一个网站是 : Set(Google, Baidu)
查看列表 site 是否为空 : false
查看 nums 是否为空 : true

ตั้งค่าการเชื่อม

คุณสามารถใช้ประกอบการ++ หรือตั้ง. ++ () วิธีการที่จะเชื่อมต่อสองชุดถ้ามีองค์ประกอบที่ซ้ำกันจะลบองค์ประกอบที่ซ้ำกัน ตัวอย่างมีดังนี้

object Test {
   def main(args: Array[String]) {
      val site1 = Set("w3big", "Google", "Baidu")
      val site2 = Set("Faceboook", "Taobao")

      // ++ 作为运算符使用
      var site = site1 ++ site2
      println( "site1 ++ site2 : " + site )

      //  ++ 作为方法使用
      site = site1.++(site2)
      println( "site1.++(site2) : " + site )
   }
}

การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:

$ vim Test.scala 
$ scala Test.scala 
site1 ++ site2 : Set(Faceboook, Taobao, Google, Baidu, w3big)
site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, w3big)

ค้นหาสูงสุดและต่ำสุดองค์ประกอบในการเก็บรวบรวม

คุณสามารถใช้วิธีSet.min เพื่อหาองค์ประกอบที่เล็กที่สุดในการเก็บรวบรวมการใช้วิธี Set.maxเพื่อหาองค์ประกอบที่ใหญ่ที่สุดในคอลเลกชัน ตัวอย่างมีดังนี้

object Test {
   def main(args: Array[String]) {
      val num = Set(5,6,9,20,30,45)

      // 查找集合中最大与最小元素
      println( "Set(5,6,9,20,30,45) 集合中的最小元素是 : " + num.min )
      println( "Set(5,6,9,20,30,45) 集合中的最大元素是 : " + num.max )
   }
}

การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:

$ vim Test.scala 
$ scala Test.scala 
Set(5,6,9,20,30,45) 集合中的最小元素是 : 5
Set(5,6,9,20,30,45) 集合中的最大元素是 : 45

การตัด

คุณสามารถใช้การตั้งค่า. & วิธี Set.intersectหรือวิธีการที่จะเห็นจุดตัดของสองชุดขององค์ประกอบ ตัวอย่างมีดังนี้

object Test {
   def main(args: Array[String]) {
      val num1 = Set(5,6,9,20,30,45)
      val num2 = Set(50,60,9,20,35,55)

      // 交集
      println( "num1.&(num2) : " + num1.&(num2) )
      println( "num1.intersect(num2) : " + num1.intersect(num2) )
   }
}

การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:

$ vim Test.scala 
$ scala Test.scala 
num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)

Scala ชุดวิธีการทั่วไป

ตารางต่อไปนี้แสดงชุด Scala วิธีที่นิยมใช้:

เลขที่ วิธีการและรายละเอียด
1

def + (ELEM: A): ตั้งค่า [A]

เพิ่มองค์ประกอบใหม่ในคอลเลกชัน, X และสร้างคอลเลกชันใหม่เว้นแต่องค์ประกอบที่มีอยู่

2

def - (ELEM: A): ชุด [A]

การลบองค์ประกอบของคอลเลกชันและสร้างคอลเลกชันใหม่

3

def มี (ELEM: A): บูลีน

ถ้าองค์ประกอบที่มีอยู่ในคอลเลกชันก็จะส่งกลับจริงมิฉะนั้นกลับเท็จ

4

def (ที่: ชุด [A ]): ชุด [A]

ผลตอบแทนที่ได้แยกสองชุด

5

def & ~ (ว่าตั้งค่า [ A]): ชุด [A]

ผลตอบแทนที่แตกต่างกันชุดสองชุด

6

def + (elem1: A, elem2 : A, elems: A *): ตั้ง [A]

โดยการเพิ่มองค์ประกอบที่เข้ามาของคอลเลกชันที่ระบุในการสร้างชุดใหม่ของการเปลี่ยนรูป

7

def ++ (elems: A): ชุด [A]

ผสานสองคอลเลกชัน

8

def - (elem1: A, elem2 : A, elems: A *): ชุด [A]

โดยการเอาองค์ประกอบของคอลเลกชันที่ระบุผ่านการสร้างชุดใหม่ไม่เปลี่ยนรูป

9

def addString (B: StringBuilder): StringBuilder

เพิ่มองค์ประกอบทั้งหมดของคอลเลกชันที่จะบัฟเฟอร์สตริงไม่เปลี่ยนรูป

10

def addString (B: StringBuilder ก.ย. : String): StringBuilder

เพิ่มองค์ประกอบทั้งหมดของคอลเลกชันที่ไม่เปลี่ยนรูปเป็นบัฟเฟอร์สตริงโดยใช้ตัวคั่นที่ระบุ

11

def ใช้ (ELEM: A)

ตรวจหาว่าคอลเลกชันที่มีองค์ประกอบที่ระบุ

12

def count (P: (A) => บูลีน): Int

คำนวณจำนวนขององค์ประกอบที่ตรงตามเกณฑ์ที่กำหนดที่ตั้งไว้

13

def copyToArray (XS อาร์เรย์ [A ] เริ่มต้น: Int เลน: int): หน่วย

คัดลอกองค์ประกอบคอลเลกชันที่ไม่เปลี่ยนรูปไปยังอาร์เรย์

14

diff def (ที่: ชุด [A ]): ชุด [A]

ความแตกต่างเมื่อเทียบชุดสองชุด

15

def ลดลง (N: int): ตั้งค่า [A]]

คอลเลกชันใหม่ก่อนที่จะกลับมาทิ้ง n องค์ประกอบ

16

def dropRight (N: int): ตั้งค่า [A]

กลับทิ้งองค์ประกอบ n ล่าสุดของคอลเลกชันใหม่

17

def dropWhile (P: (A) => บูลีน): ตั้ง [A]

องค์ประกอบยกเลิกซ้ายไปขวาจนอยู่ในสภาพที่ไม่พอใจ P

18

def เท่ากับ (ที่: ใด ๆ ): บูลีน

เท่ากับวิธีการสามารถนำมาใช้ในลำดับใด ๆ สำหรับการเปรียบเทียบชุดมีค่าเท่ากัน

19

def อยู่ (P: (A) => บูลีน): บูลีน

การวิเคราะห์ชุดเปลี่ยนรูปเงื่อนไของค์ประกอบที่ระบุอยู่

20

def กรอง (P: (A) => บูลีน): ชุด [A]

การส่งออกเป็นไปตามเกณฑ์ที่กำหนดทุกองค์ประกอบของคอลเลกชันที่ไม่เปลี่ยนรูป

21

def พบ (P: (A) => บูลีน): ตัวเลือก [A]

หาองค์ประกอบแรกในคอลเลกชันที่ไม่เปลี่ยนรูปพบกับเงื่อนไขที่ระบุ

22

def forall (P: (A) => บูลีน): บูลีน

ค้นหาองค์ประกอบทั้งหมดของคอลเลกชันที่ไม่เปลี่ยนรูปที่ตรงกับเกณฑ์ที่ระบุ

23

def foreach (F: (A) => หน่วย): หน่วย

ฟังก์ชั่นที่ใช้กับทุกองค์ประกอบของคอลเลกชันที่ไม่เปลี่ยนรูป

24

หัว def: การ

ได้รับองค์ประกอบแรกของคอลเลกชันที่ไม่เปลี่ยนรูป

25

init def: ตั้ง [A]

ผลตอบแทนที่ได้องค์ประกอบทั้งหมดยกเว้นคนสุดท้าย

26

def ตัด (ที่: ชุด [A ]): ชุด [A]

คำนวณจุดตัดของสองชุด

27

def isEmpty: บูลีน

ตรวจสอบว่ามีคอลเลกชันที่ยังว่างอยู่

28

def iterator: Iterator [A]

สร้าง iterator ใหม่ย้ำองค์ประกอบ

29

def ล่าสุด: เป็น

ผลตอบแทนที่ได้องค์ประกอบที่ผ่านมา

30

def map [b] (F: (A) => b): immutable.Set [b]

โดยวิธีการที่กำหนดจะคำนวณทุกองค์ประกอบ

วันที่ 31

แม็กซ์ def: การ

หาองค์ประกอบสูงสุด

32

นาที def: การ

หาองค์ประกอบที่เล็กที่สุด

33

def mkString: String

ชุดขององค์ประกอบทั้งหมดของจอแสดงผลเป็นสตริง

34

def mkString (SEP: String): String

แยกจะนำมารวมกันองค์ประกอบทั้งหมดที่แสดงเป็นสตริง

35

สินค้า def: การ

ส่งกลับชุดเปลี่ยนรูปของตัวเลขในองค์ประกอบพล็อต

36

ขนาด def: Int

ส่งกลับจำนวนขององค์ประกอบในคอลเลกชันที่ไม่เปลี่ยนรูป

37

def splitAt (N: int): (ตั้งค่า [A] ตั้งค่า [A])

คอลเลกชันที่ไม่เปลี่ยนรูปแบ่งออกเป็นสองภาชนะบรรจุครั้งแรกโดยองค์ประกอบ n ครั้งแรกและครั้งที่สองโดยองค์ประกอบที่เหลือ

38

def subsetOf (ที่: ชุด [A ]): บูลีน

หากคอลเลกชันที่มีระบบย่อยผลตอบแทนจริงเท็จอย่างอื่น

39

รวม def: การ

กลับไม่เปลี่ยนรูปชุดขององค์ประกอบทั้งหมดของดิจิตอลและ

40

หาง def: ตั้ง [A]

กลับไม่เปลี่ยนรูปชุดขององค์ประกอบอื่น ๆ นอกเหนือไปจากองค์ประกอบแรก

41

def ใช้ (N: int): ตั้งค่า [A]

ส่งกลับองค์ประกอบ n แรก

42

def takeRight (N: int): ตั้งค่า [A]

องค์ประกอบ n กลับ

43

def toArray อาร์เรย์ [A]

จะถูกแปลงเป็นคอลเลกชันดิจิตอล

44

def toBuffer [B>: A] : บัฟเฟอร์ [b]

กลับบัฟเฟอร์มีองค์ประกอบทั้งหมดของคอลเลกชันของไม่เปลี่ยนรูป

45

ToList def: รายการ [A]

รายการกลับมีองค์ประกอบทั้งหมดของคอลเลกชันของไม่เปลี่ยนรูป

46

def toMap [T, U]: แผนที่ [T, U]

กลับไปเป็นแผนที่มีองค์ประกอบทั้งหมดของคอลเลกชันของไม่เปลี่ยนรูป

47

def toSeq: ลำดับ [A]

กลับลำดับมีองค์ประกอบทั้งหมดของคอลเลกชันของไม่เปลี่ยนรูป

48

def toString (): String

ส่งกลับสตริงจะคัดค้านการแทน

วิธีการมากขึ้นในการอ้างถึง เอกสาร API

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