Bộ sưu tập Scala - Bản đồ
Bản đồ Scala là một tập hợp các cặp khóa / giá trị. Bất kỳ giá trị nào cũng có thể được truy xuất dựa trên khóa của nó. Các khóa là duy nhất trong Bản đồ, nhưng các giá trị không cần phải là duy nhất. Bản đồ còn được gọi là bảng băm. Có hai loại Bản đồ,immutable và mutable. Sự khác biệt giữa các đối tượng có thể thay đổi và bất biến là khi một đối tượng là bất biến, bản thân đối tượng đó không thể thay đổi được.
Theo mặc định, Scala sử dụng Bản đồ bất biến. Nếu bạn muốn sử dụng Bản đồ có thể thay đổi, bạn sẽ phải nhậpscala.collection.mutable.Maplớp một cách rõ ràng. Nếu bạn muốn sử dụng cả Bản đồ có thể thay đổi và Bản đồ bất biến trong cùng một bản đồ, thì bạn có thể tiếp tục tham khảo Bản đồ bất biến nhưMap nhưng bạn có thể tham khảo tập hợp có thể thay đổi là mutable.Map.
Sau đây là các câu lệnh ví dụ để khai báo Bản đồ bất biến -
// Empty hash table whose keys are strings and values are integers:
var A:Map[Char,Int] = Map()
// A map with keys and values.
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")
Trong khi xác định bản đồ trống, chú thích kiểu là cần thiết vì hệ thống cần gán một kiểu cụ thể cho biến. Nếu chúng ta muốn thêm một cặp khóa-giá trị vào một Bản đồ, chúng ta có thể sử dụng toán tử + như sau.
A + = ('I' -> 1)
A + = ('J' -> 5)
A + = ('K' -> 10)
A + = ('L' -> 100)
Các thao tác cơ bản trên MAP
Tất cả các thao tác trên bản đồ có thể được thể hiện theo ba phương pháp sau.
Sr.No | Phương pháp & Mô tả |
---|---|
1 | keys Phương thức này trả về một có thể lặp lại chứa mỗi khóa trong bản đồ. |
2 | values Phương thức này trả về một có thể lặp lại chứa mỗi giá trị trong bản đồ. |
3 | isEmpty Phương thức này trả về true nếu bản đồ trống, ngược lại là false. |
Hãy thử chương trình ví dụ sau đây hiển thị cách sử dụng các phương pháp Bản đồ.
Thí dụ
object Demo {
def main(args: Array[String]) {
val colors = Map(
"red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
)
val nums: Map[Int, Int] = Map()
println( "Keys in colors : " + colors.keys )
println( "Values in colors : " + colors.values )
println( "Check if colors is empty : " + colors.isEmpty )
println( "Check if nums is empty : " + nums.isEmpty )
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
Keys in colors : Set(red, azure, peru)
Values in colors : MapLike(#FF0000, #F0FFFF, #CD853F)
Check if colors is empty : false
Check if nums is empty : true
Kết nối các bản đồ
Bạn có thể sử dụng ++ nhà điều hành hoặc Map.++() để ghép hai hoặc nhiều Bản đồ, nhưng trong khi thêm Bản đồ, nó sẽ xóa các khóa trùng lặp.
Hãy thử chương trình ví dụ sau để ghép hai Bản đồ.
Thí dụ
object Demo {
def main(args: Array[String]) {
val colors1 = Map(
"red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
)
val colors2 = Map(
"blue" -> "#0033FF", "yellow" -> "#FFFF00", "red" -> "#FF0000"
)
// use two or more Maps with ++ as operator
var colors = colors1 ++ colors2
println( "colors1 ++ colors2 : " + colors )
// use two maps with ++ as method
colors = colors1.++(colors2)
println( "colors1.++(colors2)) : " + colors )
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
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)
In các khóa và giá trị từ bản đồ
Bạn có thể lặp lại các khóa và giá trị của Bản đồ bằng vòng lặp "foreach". Ở đây, chúng tôi đã sử dụng phương phápforeachđược liên kết với trình vòng lặp để xem qua các phím. Sau đây là chương trình ví dụ.
Thí dụ
object Demo {
def main(args: Array[String]) {
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF","peru" -> "#CD853F")
colors.keys.foreach{
i =>
print( "Key = " + i )
println(" Value = " + colors(i) )
}
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
Key = red Value = #FF0000
Key = azure Value = #F0FFFF
Key = peru Value = #CD853F
Kiểm tra chìa khóa trong Bản đồ
Bạn có thể sử dụng Map.containsphương pháp để kiểm tra xem một khóa nhất định có tồn tại trong bản đồ hay không. Hãy thử chương trình ví dụ sau để kiểm tra khóa.
Thí dụ
object Demo {
def main(args: Array[String]) {
val colors = Map(
"red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
)
if( colors.contains( "red" )) {
println("Red key exists with value :" + colors("red"))
} else {
println("Red key does not exist")
}
if( colors.contains( "maroon" )) {
println("Maroon key exists with value :" + colors("maroon"))
} else {
println("Maroon key does not exist")
}
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
Red key exists with value :#FF0000
Maroon key does not exist