Tôi có Bản đồ scala và muốn kiểm tra xem có tồn tại một giá trị nhất định trên bản đồ hay không.Cách kiểm tra xem khóa hoặc giá trị có tồn tại trong Bản đồ không?
myMap.exists(/*What should go here*/)
Tôi có Bản đồ scala và muốn kiểm tra xem có tồn tại một giá trị nhất định trên bản đồ hay không.Cách kiểm tra xem khóa hoặc giá trị có tồn tại trong Bản đồ không?
myMap.exists(/*What should go here*/)
Có những lựa chọn khác nhau, tùy thuộc vào những gì bạn có ý nghĩa.
Nếu bạn có ý nghĩa bởi "giá trị" giá trị khóa cặp, sau đó bạn có thể sử dụng một cái gì đó giống như
myMap.exists(_ == ("fish",3))
myMap.exists(_ == "fish" -> 3)
Nếu bạn có ý nghĩa giá trị của cặp khóa-giá trị, sau đó bạn có thể
myMap.values.exists(_ == 3)
myMap.exists(_._2 == 3)
Nếu bạn chỉ muốn kiểm tra khóa của cặp khóa-giá trị, sau đó
myMap.keySet.exists(_ == "fish")
myMap.exists(_._1 == "fish")
myMap.contains("fish")
Lưu ý rằng mặc dù các biểu mẫu tuple (ví dụ: _._1 == "fish"
) kết thúc ngắn hơn, các biểu mẫu hơi dài hơn rõ ràng hơn về những gì bạn muốn xảy ra.
bạn cung cấp một thử nghiệm mà một trong những giá trị bản đồ sẽ vượt qua, ví dụ:
val mymap = Map(9->"lolo", 7->"lala")
mymap.exists(_._1 == 7) //true
mymap.exists(x => x._1 == 7 && x._2 == "lolo") //false
mymap.exists(x => x._1 == 7 && x._2 == "lala") //true
Các ScalaDocs nói về phương pháp "thử nghiệm liệu một vị tổ chức cho một số các yếu tố của bản đồ này không thay đổi. ", catch là nó nhận được một tuple (key, value) thay vì hai tham số.
gì về điều này:
val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd')
map.values.toSeq.contains('c') //false
sản lượng true
nếu bản đồ chứa c
giá trị.
Nếu bạn nhấn mạnh vào việc sử dụng exists
:
map.exists({case(_, value) => value == 'c'})
'values' tạo mới' Iterable', do đó bạn có lẽ là tốt hơn với 'map.valuesIterator.contains ('c')' (mặc dù điều đó không dễ dàng như 'map.exists (_._ 2 == 'c')'!) –
Bạn có muốn biết liệu giá trị có tồn tại trên bản đồ hay không? Nếu bạn muốn kiểm tra chìa khóa, sử dụng isDefinedAt
:
myMap isDefinedAt key
mỗi câu trả lời ở trên, lưu ý rằng tồn tại() là chậm hơn đáng kể so với chứa() (Tôi đã làm chuẩn với một bản đồ chứa 5000 phím chuỗi, và tỷ lệ là x100 nhất quán). Tôi là tương đối mới để scala nhưng tôi đoán là tồn tại() là iterating trên tất cả các phím (hoặc chìa khóa, giá trị tupple) trong khi có sử dụng truy cập ngẫu nhiên của Map
Cũng đáng nói rằng để kiểm tra sự tồn tại của một khóa, thư viện cung cấp myMap.contains ("cá") –
@DaveGriffith - Thật vậy. Tôi đã chỉ sử dụng "tồn tại", nhưng đó là một quan trọng đủ (vì nó là một trong những bạn _should_ sử dụng) để thêm vào. Tôi đã sửa đổi câu trả lời cho phù hợp. –