Scala แผนที่ (Map)
แผนที่ (Map) เป็นชนิดของซ้ำคู่ค่าคีย์ A (คีย์ / ค่า) โครงสร้าง
ค่าทั้งหมดสามารถเรียกดูโดยคีย์
แผนที่ที่สำคัญคือไม่ซ้ำกัน
แผนที่จะเรียกว่าตารางแฮช (Hash ตาราง)
แผนที่มีสองประเภทของตัวแปรและไม่สามารถเปลี่ยนแปลงได้ยกเว้นว่าวัตถุตัวแปรสามารถปรับเปลี่ยนได้โดยไม่ต้องวัตถุที่ไม่แน่นอนไม่ได้
โดยค่าเริ่มต้น Scala แผนที่ไม่เปลี่ยนรูปหากคุณจำเป็นต้องใช้ชุดตัวแปรคุณจะต้องชัดเจนแนะนำชั้นนำเข้า scala.collection.mutable.Map
ในกาลาคุณสามารถใช้ตัวแปรและไม่เปลี่ยนรูปแผนที่โดยตรงใช้แผนที่ไม่เปลี่ยนรูปการใช้งานที่ไม่แน่นอน mutable.Map ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประยุกต์ใช้แผนที่ไม่เปลี่ยนรูปไปนี้:
// 空哈希表,键为字符串,值为整型 var A:Map[Char,Int] = Map() // Map 键值对演示 val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")
เมื่อคุณกำหนดแผนที่คุณจำเป็นต้องกำหนดประเภทของคู่คีย์มูลค่า หากคุณต้องการที่จะเพิ่มคู่ค่าคีย์คุณสามารถใช้เครื่องหมาย + ดังต่อไปนี้:
A += ('I' -> 1) A += ('J' -> 5) A += ('K' -> 10) A += ('L' -> 100)
พื้นฐานการดำเนินงานแผนที่
Scala แผนที่มีสามดำเนินงานพื้นฐานคือ:
ทาง | ลักษณะ |
---|---|
กุญแจ | กลับไปเป็นแผนที่ทุกคีย์ (Key) |
ค่า | แผนที่ส่งกลับค่าทั้งหมด (ค่า) |
isEmpty | อยู่ในแผนที่จะว่างผลตอบแทนที่แท้จริง |
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประยุกต์ใช้ด้านบนสามวิธีพื้นฐาน:
object Test { def main(args: Array[String]) { val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F") val nums: Map[Int, Int] = Map() println( "colors 中的键为 : " + colors.keys ) println( "colors 中的值为 : " + colors.values ) println( "检测 colors 是否为空 : " + colors.isEmpty ) println( "检测 nums 是否为空 : " + nums.isEmpty ) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test colors 中的键为 : Set(red, azure, peru) colors 中的值为 : MapLike(#FF0000, #F0FFFF, #CD853F) 检测 colors 是否为空 : false 检测 nums 是否为空 : true
แผนที่การควบรวมกิจการ
คุณสามารถใช้ประกอบการ++ หรือแผนที่. ++ ()วิธีการเชื่อมต่อสองแผนที่เอาคีย์ซ้ำเมื่อแผนที่การควบรวมกิจการ ต่อไปนี้สองตัวอย่างแสดงให้เห็นถึงแผนที่รวม:
object Test { def main(args: Array[String]) { val colors1 = Map("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F") val colors2 = Map("blue" -> "#0033FF", "yellow" -> "#FFFF00", "red" -> "#FF0000") // ++ 作为运算符 var colors = colors1 ++ colors2 println( "colors1 ++ colors2 : " + colors ) // ++ 作为方法 colors = colors1.++(colors2) println( "colors1.++(colors2)) : " + colors ) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test colors1 ++ colors2 : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000) colors1.++(colors2)) : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000)
แผนที่ของปุ่มส่งออกและค่า
ห่วง foreach ต่อไปนี้ผ่านแผนที่การส่งออกของคีย์และค่า:
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "http://www.w3big.com", "baidu" -> "http://www.baidu.com", "taobao" -> "http://www.taobao.com") sites.keys.foreach{ i => print( "Key = " + i ) println(" Value = " + sites(i) )} } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test Key = w3big Value = http://www.w3big.com Key = baidu Value = http://www.baidu.com Key = taobao Value = http://www.taobao.com
ตรวจสอบว่าคีย์ที่ระบุอยู่ในแผนที่
คุณสามารถใช้วิธีMap.contains เพื่อดูว่าการปรากฏตัวของแผนที่ที่สำคัญที่ระบุตัวอย่างมีดังนี้
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "http://www.w3big.com", "baidu" -> "http://www.baidu.com", "taobao" -> "http://www.taobao.com") if( sites.contains( "w3big" )){ println("w3big 键存在,对应的值为 :" + sites("w3big")) }else{ println("w3big 键不存在") } if( sites.contains( "baidu" )){ println("baidu 键存在,对应的值为 :" + sites("baidu")) }else{ println("baidu 键不存在") } if( sites.contains( "google" )){ println("google 键存在,对应的值为 :" + sites("google")) }else{ println("google 键不存在") } } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test w3big 键存在,对应的值为 :http://www.w3big.com baidu 键存在,对应的值为 :http://www.baidu.com google 键不存在
วิธี Scala แผนที่
ตารางต่อไปนี้แสดงวิธีการที่ใช้กันทั่วไป Scala แผนที่:
เลขที่ | วิธีการและรายละเอียด |
---|---|
1 | def ++ (XS: แผนที่ [( A, B)]): แผนที่ [A, B] มันกลับแผนที่ใหม่แผนที่ใหม่ xs องค์ประกอบ |
2 | def - (elem1: A, elem2 : A, elems: A *): แผนที่ [A, B] ผลตอบแทนที่ได้แผนที่ใหม่เอากุญแจสำคัญในการ elem1, elem2 หรือ elems อื่น ๆ |
3 | def - (XS: GTO [A ]): แผนที่ [A, B] ผลตอบแทนที่ได้แผนที่ใหม่เอา XS วัตถุสำคัญที่สอดคล้องกัน |
4 | def ได้รับ (คีย์: A): ตัวเลือก [b] ส่งกลับค่าของคีย์ที่ระบุ |
5 | def iterator: Iterator [(A, B)] สร้าง iterator ใหม่และผลคู่คีย์ / ค่า |
6 | def addString (B: StringBuilder): StringBuilder แผนที่องค์ประกอบทั้งหมดที่แนบมากับ StringBuilder สามารถเพิ่มเพื่อคั่น |
7 | def addString (B: StringBuilder ก.ย. : String): StringBuilder แผนที่องค์ประกอบทั้งหมดที่แนบมากับ StringBuilder สามารถเพิ่มเพื่อคั่น |
8 | def ใช้ (คีย์: A): B ส่งกลับค่าของคีย์ที่ระบุถ้ามีกลับไปที่วิธีการเริ่มต้นไม่มีแผนที่ |
9 | def ชัดเจน (): หน่วย ล้างแผนที่ |
10 | def โคลน (): แผนที่ [A , B] จากที่หนึ่งไปยังอีกแผนที่แผนที่ |
11 | def มี (คีย์: A): บูลีน หากมีแผนที่คีย์ที่ระบุผลตอบแทนที่แท้จริงมิฉะนั้นกลับเท็จ |
12 | def copyToArray (XS อาร์เรย์ [( A, B)]): หน่วย คัดลอกการตั้งค่าไปยังอาร์เรย์ |
13 | def count (P: ((A , B)) => บูลีน): Int คำนวณจำนวนขององค์ประกอบที่ตรงตามเกณฑ์ที่กำหนดที่ตั้งไว้ |
14 | เริ่มต้น def (คีย์: A): B ค่าเริ่มต้นที่มีการกำหนดผลตอบแทนแผนที่เมื่อคีย์ไม่อยู่ |
15 | def ลดลง (N: int): แผนที่ [A, B] คอลเลกชันใหม่ก่อนที่จะกลับมาทิ้ง n องค์ประกอบ |
16 | def dropRight (N: int): แผนที่ [A, B] กลับทิ้งองค์ประกอบ n ล่าสุดของคอลเลกชันใหม่ |
17 | def dropWhile (P: ((A , B)) => บูลีน): แผนที่ [A, B] องค์ประกอบยกเลิกซ้ายไปขวาจนอยู่ในสภาพที่ไม่พอใจ P |
18 | def ว่างเปล่า: แผนที่ [A, B ] กลับชนิดเดียวกันของแผนที่ที่ว่างเปล่า |
19 | def เท่ากับ (ที่: ใด ๆ ): บูลีน หากทั้งสองมีค่าเท่ากันแผนที่ (คีย์ / ค่าเท่ากัน) ผลตอบแทนจริงเท็จอย่างอื่น |
20 | def อยู่ (P: ((A , B)) => บูลีน): บูลีน การวิเคราะห์เงื่อนไขที่กำหนดไว้ในองค์ประกอบของคอลเลกชันที่มีอยู่ |
21 | def กรอง (P: ((A , B)) => บูลีน): แผนที่ [A, B] กลับไปที่คอลเลกชันทั้งหมดที่มีคุณสมบัติตามเกณฑ์ที่กำหนด |
22 | def กรอง (P: (A) => บูลีน): แผนที่ [A, B] ส่งแผนที่ไม่เปลี่ยนรูปเป็นไปตามเกณฑ์ที่กำหนดไว้ |
23 | def พบ (P: ((A , B)) => บูลีน): ตัวเลือก [(A, B)] หาองค์ประกอบแรกในคอลเลกชันที่ตรงกับเกณฑ์ที่ระบุ |
24 | def foreach (F: ((A , B)) => หน่วย): หน่วย องค์ประกอบทั้งหมดของฟังก์ชั่นต่อตลาดหลักทรัพย์ฯ |
25 | def init: แผนที่ [A, B ] ผลตอบแทนที่ได้องค์ประกอบทั้งหมดยกเว้นคนสุดท้าย |
26 | def isEmpty: บูลีน ตรวจหาว่าแผนที่ที่ว่างเปล่า |
27 | คีย์ def: Iterable [A] กลับทุกคีย์ / p> |
28 | def ล่าสุด: (A, B) ผลตอบแทนที่ได้องค์ประกอบที่ผ่านมา |
29 | def Max: (A, B) หาองค์ประกอบสูงสุด |
30 | def นาที: (A, B) หาองค์ประกอบที่เล็กที่สุด |
วันที่ 31 | def mkString: String ชุดขององค์ประกอบทั้งหมดของจอแสดงผลเป็นสตริง |
32 | สินค้า def: (A, B) ผลตอบแทนที่ได้คอลเลกชันขององค์ประกอบดิจิตอลในพล็อต |
33 | def ลบ (คีย์: A): ตัวเลือก [b] ลบคีย์ที่ระบุ |
34 | def รักษา (P: (A, B) => บูลีน): Map.this.type หากพวกเขาได้พบในสภาพที่ผลตอบแทนจริง |
35 | ขนาด def: Int ส่งกลับจำนวนขององค์ประกอบในแผนที่ |
36 | รวมพลังป้องกัน: (A, B) ผลตอบแทนที่ได้คอลเลกชันขององค์ประกอบทั้งหมดของดิจิตอล |
37 | หาง def: แผนที่ [A, B ] ผลตอบแทนที่ได้คอลเลกชันขององค์ประกอบอื่น ๆ ยกเว้นองค์ประกอบแรก |
38 | def ใช้ (N: int): แผนที่ [A, B] ส่งกลับองค์ประกอบ n แรก |
39 | def takeRight (N: int): แผนที่ [A, B] องค์ประกอบ n กลับ |
40 | def takeWhile (P: ((A , B)) => บูลีน): แผนที่ [A, B] ส่งกลับองค์ประกอบเงื่อนไขที่ระบุจะพบ |
41 | def toArray อาร์เรย์ [(A, B)] ตั้งค่าการถ่ายโอนอาร์เรย์ |
42 | def toBuffer [B>: A] : บัฟเฟอร์ [b] กันชนหลังมีองค์ประกอบทั้งหมดของแผนที่ |
43 | ToList def: รายการ [A] รายการกลับมีองค์ประกอบทั้งหมดของแผนที่ |
44 | def toSeq: ลำดับ [A] กลับ Seq, มีทุกองค์ประกอบแผนที่ |
45 | def toSet: ตั้ง [A] กำหนดกลับมีองค์ประกอบทั้งหมดของแผนที่ |
46 | def toString (): String ส่งคืนวัตถุสตริง |
วิธีการมากขึ้นในการอ้างถึง เอกสาร API