我有2個系列:a
是class C
的一個Scala對象序列。 b
是一串字符串。 C
有一個字符串字段,name
,可能會匹配b
中的一個項目。我想要的是循環通過a
,並找到所有c.name
與b
中的一個項目匹配。我如何在Scala中做到這一點?Scala遍歷2個集合並查找匹配結果
1
A
回答
4
迭代遍歷a和b會變得昂貴,因爲一個循環嵌套在另一個循環內會產生O(n^2)時間。如果b足夠大,則可能需要先將其設置爲Set,然後將其設置爲O(n)。
val bSet = b.toSet;
a.filter(c => b.contains(c.name))
我看這是「應用下面的過濾器的結果:C中的每個項目,包括它在結果當且僅當C的名字是在B」。
1
下面是與yield相當的循環。
for(c <- a if b.contains(c.name)) yield c.name
相關問題
- 1. 遍歷兩個數組並比較結果以顯示不匹配的結果
- 2. 結果集不能遍歷
- 3. 遍歷結果集.Net
- 4. 遍歷equal_range結果集
- 5. 遍歷結果集bs4
- 6. mysqli的遍歷結果集
- 7. 如何遍歷2個對象數組,並通過匹配id進行合併
- 8. 遍歷並比較2個數組列表並找到匹配項
- 9. 密碼匹配查詢合併結果集
- 10. 遍歷集合
- 11. 執行SQL查詢並循環遍歷結果集在rails中
- 12. 遍歷DOM對象數組並找到第一個匹配
- 13. 遍歷jQuery的2個陣列,並結合
- 14. 功能遍歷列表,合併結果到一個數據框
- 15. SQL查找匹配 - 合併查詢
- 16. 如何遍歷結果集並在結果集中返回每行N行
- 17. LINQ遍歷集合和增量追加到匹配值
- 18. 循環遍歷結果並聚合並吐出php
- 19. 循環遍歷結果集MongoDB 3
- 20. VBA遍歷列並應用公式(如果匹配)(或不匹配)
- 21. Scala:查找匹配並在集合中返回匹配相關值的通用方法
- 22. 循環遍歷列表元組並添加(如果不匹配)
- 23. 結合CountIF和匹配或查找
- 24. 如何遍歷linq-to-sql查詢結果的結果並追加結果?
- 25. 查找不匹配grep,結果
- 26. 搜索/遍歷QListWidget並顯示結果
- 27. 遍歷SQL結果,並做了IF,ELSE
- 28. 與集合匹配的Scala模式
- 29. 如何遍歷結果集並執行每條語句? (MySQL的)
- 30. C#遍歷一個集合並將每個對象分配給一個變量
你我的朋友是搖滾明星!謝謝, – Bob
如果b足夠大,您可能需要先將其設置爲Set,例如: val bSet = b.toSet; a.filter(c => b.contains(c.name)) –
感謝您的建議,亞歷克斯,但爲什麼使它成爲第一個定義足夠大。 – Bob