Datomicクエリは互換性のためにjava.util.HashSet
を返します。私はclojure.set
クエリの結果セットに設定の違いのような機能を使用したいと思います。現在、結果セットを(set datomic_result)
を使用してClojureに変換しています。これに代わる方法はありますか?java.util.HashSetをClojureに変換する最良の方法
1
A
答えて
1
返される値が実装の詳細であるjava.util.Set
(データ型documentation、戻り値の型はjava.util.Collection
)に依存することはお勧めしません。
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. ClojureソースをJavaソースに自動的に変換するための最良の方法
- 2. ユーザ入力をUTF-8に変換する最良の方法
- 3. Java NumberをBigDecimalに変換する:最良の方法
- 4. Clojureでこのシーケンス変換を処理する最良の方法は何ですか?
- 5. codefirstでデータベーステーブルをモデルに変換する最も良い方法
- 6. 非ジェネリックコレクションをジェネリックコレクションに変換する最も良い方法
- 7. フォームデータをJSONに変換する最も良い方法
- 8. ArrayListを文字列に変換する最も良い方法
- 9. オンラインcsvをデータフレームスカラーに変換する最も良い方法
- 10. Pandas DataFrame列を変換するための最良の方法
- 11. 日付を変換/表示する最も良い方法
- 12. このフォーマットをタイムスパンに変換する最良の方法は何ですか?
- 13. Doubleを整数に変換する最良の方法は何ですか
- 14. リレーショナルをオブジェクト指向に変換する最良の方法は何ですか?
- 15. オブジェクトをSQLiteレコードに "変換"する最良の方法は何ですか?
- 16. バイト配列をIntStreamに変換する最良の方法は何ですか?
- 17. 月の文字列をMFCのintに変換する最も良い方法
- 18. サードパーティのデータベースからローカルデータベースにデータを変換する最良の方法
- 19. 辞書の辞書をタブファイルに変換する最良の方法
- 20. 月の名前を月の数字に変換する最も良い方法
- 21. Rのデータを消去してXTSに変換する最も良い方法
- 22. 分数を小数点以下に変換する最良の方法。
- 23. MYSQLクエリで時間帯を効率的に変換する最良の方法
- 24. 画像のリストをPythonで白黒に変換する最も良い方法
- 25. OLAP用の中間DBにデータを変換する最も良い方法
- 26. 頻度データをサンプル数(整数)に変換する最良の方法は
- 27. 既存のJavaプロジェクトをosgiバンドルに変換する最も良い方法
- 28. フラインリストをErlangの2タプルに変換する最も良い方法は?
- 29. 私のSwiftアプリをPhonegapに変換する最も良い方法は?
- 30. Tensorfow:スカラーを1次元テンソルに変換する最良の方法
'(set datomic_result)アプローチの問題点は何ですか? – OlegTheCat
これは今私に合っています。結果セットは潜在的に大きい可能性があり、私はそれに伴うオーバーヘッドがあると信じています。 – m33lky
不変性を維持しながら結果セットに対していくつかの操作を実行する必要がありますか?そうでなければ、返された 'HashSet'sを変更するのに気にしないで、javaの' Set'オペレーション( 'difference'のための' removeAll'、unionのための 'addAll'など)を使うのが最良です。 2つの10e6要素の 'HashSet'には、結果の差が5e6で、' clojure.set/difference'を使って6秒、javaの 'removeAll'を使って約1秒です。 – Josh