到目前為止,我有一個充滿鍵值對的元組陣列(鍵是整數,值是字串)。
val tuple_array = new Array[(K,V)](100)
我想在這個陣列中找到一個特定的鍵。到目前為止,我已經嘗試過:
tuple_array.find()
但這需要我輸入一個鍵值對。(我認為)。我只想搜索這個陣列,看看鍵是否存在,是否回傳 1 或 true。(尚未決定)。我可以回圈遍歷陣列,但我想要更快的運行時間。
我將如何去尋找這個?
uj5u.com熱心網友回復:
find要求您傳遞謂詞:true滿足條件時回傳的函式。你可以像這樣使用它:
tuple_array.find { tuple =>
tuple._1 == searched_key
}
它不需要您傳遞元組。
由于這是一個陣列,您必須在更壞的情況下遍歷整個陣列 (O(n)),除非您的陣列已排序并允許使用二進制搜索(這不是),否則沒有更快的方法(漸近)界面的一部分,因為您永遠不知道隨機陣列是否已排序)。無論您是通過手動迭代還是通過find(或collectFirst)迭代來做到這一點,都不會對速度產生太大影響。
uj5u.com熱心網友回復:
但這需要我輸入一個鍵值對。(我認為)。
不,不是,檢查檔案,您可以這樣做:
tuple_array.find(_._1 == theKeyYouWant).map(_._2)
Option[V]如果鍵存在,則回傳一個與鍵關聯的值。如果密鑰存在,你可以只做一個isDefined回傳true。
可以回圈遍歷陣列,但我想要更快的運行時間。
那么find只是回圈。
您可能想要使用 aMap[K, V]而不是 anArray[(K, V)]并且只使用contains
另外,作為個人建議,您似乎對這門語言還很陌生;我建議你選擇一門課程或教程。Scala不僅僅是語法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358562.html
