스칼라 맵이 있고 맵에 특정 값이 있는지 테스트하고 싶습니다.
myMap.exists( /*What should go here*/ )
답변:
의미에 따라 여러 가지 옵션이 있습니다.
"값" 키-값 쌍 을 의미하는 경우 다음과 같이 사용할 수 있습니다.
myMap.exists(_ == ("fish",3))
myMap.exists(_ == "fish" -> 3)
키-값 쌍의 값 을 의미하는 경우 다음을 수행 할 수 있습니다.
myMap.values.exists(_ == 3)
myMap.exists(_._2 == 3)
당신은 단지 테스트하고 싶었다면 키 - 값 쌍의 키를 누른 다음,
myMap.keySet.exists(_ == "fish")
myMap.exists(_._1 == "fish")
myMap.contains("fish")
튜플 형식 (예 :) _._1 == "fish"
이 더 짧아 지 더라도 약간 더 긴 형식은 원하는 작업에 대해 더 명확하게 나타냅니다.
값 이 맵에 있는지 또는 키에 있는지 알고 싶 습니까? 키를 확인하려면 isDefinedAt
다음을 사용하십시오 .
myMap isDefinedAt key
맵 값 중 하나가 통과하는지 테스트합니다.
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
ScalaDocs는 "이 불변 맵의 일부 요소에 대해 술어가 보유하고 있는지 여부를 테스트합니다."라는 메소드에 대해 설명합니다. 문제는 두 개의 매개 변수 대신 튜플 (키, 값)을 수신한다는 것입니다.
이것에 대해 :
val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd')
map.values.toSeq.contains('c') //false
true
지도에 c
가치가 있으면 수익을 올립니다 .
사용을 고집하는 경우 exists
:
map.exists({case(_, value) => value == 'c'})
values
새로운 Iterable
것을 생성합니다. 그래서 당신은 아마 더 나아질 것입니다 map.valuesIterator.contains('c')
(그것만큼 쉽지는 않지만 map.exists(_._2 == 'c')
!)