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