爲了兼容性目的,Datomic查詢返回java.util.HashSet
。我想在查詢結果集上使用clojure.set
函數,如集合差異。目前,我使用(set datomic_result)
將結果集轉換爲Clojure集。有沒有其他的選擇?將java.util.HashSet轉換爲Clojure集合的最佳方法
1
A
回答
1
我不建議您依賴返回值爲java.util.Set
這一實現細節(根據Datomic documentation,返回類型爲java.util.Collection
)的事實。
將您的set操作直接應用於返回的集合而不是強制轉換爲Set,您可能會獲得更好的性能。例如:
;; set difference
(into #{} (remove to-remove) query-result)
;; set intersection
(into #{} (filter to-keep) query-result)
;; set union
(into my-set query-result)
採用into讓您充分利用這兩種Transients和Transducers,它可以給你上大投入一個顯著的性能提升。
相關問題
- 1. 將非泛型集合轉換爲泛型集合的最佳方法
- 2. Clojure,將集合轉換爲地圖
- 3. 將列表轉換爲Java集合的最簡單方法
- 4. Scala的Java集合:將java.util.list轉換爲scala.immutable.Set的最佳方式是什麼?
- 5. Magento - 扭轉集合的最佳方式
- 6. 將XML轉換爲X12和X12爲XML的最佳方法
- 7. IllegalArgumentException:無法將類java.util.HashSet的類型[]轉換爲類xxx
- 8. 將嵌套列表轉換爲Clojure中的集合列表?
- 9. 自動將Clojure源代碼轉換爲Java源代碼的最佳方式
- 10. 將這個列表的bbcode轉換爲html的最佳方法?
- 11. 將csv中的unicode轉換爲純文本的最佳方法?
- 12. Android - 將.gif轉換爲.png的最佳方法
- 13. 將childNodes轉換爲下劃線數組的最佳方法
- 14. 將Javascript Ajax轉換爲jQuery的最佳方法Ajax
- 15. 將wpf觸發器轉換爲silverlight的最佳方法?
- 16. 將NSString輸出轉換爲NSArray的最佳方法
- 17. 將ASP.NET MVC視圖轉換爲Angular的最佳方法
- 18. Tensorfow:將標量轉換爲1維張量的最佳方法
- 19. 將IEnumerable <char>轉換爲字符串的最佳方法?
- 20. 將8布爾轉換爲一個字節的最佳方法?
- 21. 將用戶輸入轉換爲UTF-8的最佳方法
- 22. 將HTML轉換爲CSHTML的最佳方法
- 23. 將元素轉換爲屏幕的最佳方法?
- 24. 將INT轉換爲BIT的最佳方法
- 25. 將對象數組轉換爲對象的最佳方法?
- 26. 將字符串數組轉換爲矢量的最佳方法?
- 27. MonoMac:將位圖轉換爲NSImage的最佳方法
- 28. 將Mongo查詢轉換爲Ruby數組的最佳方法?
- 29. 將R data.table轉換爲pandas.DataFrame的最佳方法是什麼?
- 30. 將has_many關係轉換爲has_and_belongs_to_many的最佳方法是什麼?
'(set datomic_result)'方法有什麼問題? – OlegTheCat
這適合我。結果集可能很大,我相信這會涉及到開銷。 – m33lky
您是否需要對結果集執行多個操作,以保持不變性?如果沒有,並且你不介意修改返回的'HashSet',你最好使用java的'Set'操作('removeAll'用於'差異','addAll'用於聯合等)。對於兩個10e6元素'HashSet',在結果差異中有5e6,使用'clojure.set/difference'計算需要6秒的時間差,而使用java的'removeAll'則需要大約1秒。 – Josh