Latest web development tutorials

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

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