問題タブ [guava]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - オンデマンドでファイルからコレクションにデータをロードする最も効率的な方法は何ですか?
私は、ユーザーが数千行の可能性がある複数のファイルを解析できるようにするJavaプロジェクトに取り組んでいます。解析された情報はさまざまなオブジェクトに保存され、コレクションに追加されます。
GUIはこれらすべてのオブジェクトを一度にロードしてメモリに保持する必要がないため、ファイルからデータをロード/アンロードする効率的な方法を探しています。これにより、ユーザーが要求したときにのみデータがコレクションにロードされます。 。
私は今、ただの評価オプションです。また、データのサブセットをコレクションにロードし、それをGUIに表示した後、以前に観察されたデータをリロードするための最良の方法である場合についても考えました。パーサー/Populateコレクション/PopulateGUIを再実行しますか?または、コレクションをメモリに保持する方法、またはコレクション自体をシリアル化/逆シリアル化する方法を見つけますか?
ある種のデータフィルタリングが実行されると、データのサブセットのロード/アンロードがトリッキーになる可能性があることを私は知っています。IDでフィルタリングすると、新しいサブセットには、以前に分析された2つのサブセットのデータが含まれるとしましょう。これは問題ありません。データ全体のマスターコピーをメモリに保持します。
大量のデータを処理する場合、google-collectionsは優れていて効率的であり、多くのことを単純化するメソッドを提供するので、コレクションをメモリに保持するための代替手段を提供する可能性があることを読みました。これは一般的な話です。どのコレクションを使用するかという問題は、別個の複雑なものです。
このタイプのタスクに関する一般的な推奨事項を知っていますか?同様のシナリオであなたが何をしたか聞きたいです。
必要に応じて、より詳細な情報を提供できます。
java - ジェネリックで MutableClassToInstanceMap を使用するとコンパイル エラーが発生する
putInstance メソッド呼び出しで、「MutableClassToInstanceMap 型のメソッド putInstance(Class, T) は、引数 (Class, Number) には適用できません」というコンパイル エラーが発生します。誰かが私が間違っていることを知っていますか?? ありがとう!
java - Javaでリンクされたリストの高速な連結方法はありますか?
O(1) の 2 つのリンクされたリストを、jdk1.6、Google、または apache commons collection などを介して Java と連結するにはどうすればよいですか? たとえば、jdk には、O(n) である addAll メソッドしかありません。
私が見逃しているもう 1 つの機能は、それぞれが逆順になる可能性がある 2 つのリストを連結することです。これを説明するために、2 つのリスト a->b->c と e->f->g をマージして
- a->b->c->e->f->g
- a->b->c->g->f->e
- c->b->a->e->f->g
- c->b->a->g->f->e
そのようなリストの実装を知っていますか、それとも独自のリンク リストを実装する必要がありますか? また、既存のソリューションを微調整する方法を知っておくと役立ちます (たとえば、jdk LinkedList には多くのプライベート メソッドしかありません)。これらの機能は私には非常に明白に思えます。
MicSim が指摘したように、 Java で一定時間内に 2 つのリストをマージすることは関連していますが、実際の重複ではありません! 質問は次のとおりです。
- 他のコレクションライブラリで可能ですか?
- 逆を連結する方法は?
java - GC は、クリアされた参照がトポロジー順に ReferenceQueue にエンキューされることを保証しますか?
と の 2 つのオブジェクトがAありB、ポインタ があるA.x --> Bとします。たとえば、 とWeakReferenceの両方Aにを作成Bし、関連する を使用しReferenceQueueます。
と の両方が到達不能AにBなったとします。直観的Bに到達不能と見なすことはできませんA。このような場合、それぞれの参照が直観的な (サイクルがない場合はトポロジカルな) 順序でキューに入れられるという保証が得られるReferenceQueueでしょうか? つまり、ref(B) の前に ref(A) です。わかりません。GC が一連のオブジェクトを到達不能としてマークし、それらを順不同でキューに入れたらどうなるでしょうか。
このスニペットを見て、グアバの Finalizer.java を確認していました。
frqReferenceは used への PhantomReferenceReferenceQueueであるため、これが GC されている場合、Finalizable{Weak, Soft, Phantom}References はキューを参照するため、生きていることはできません。そのため、キュー自体を GC する前に GC を実行する必要がありますが、それでも、これらの参照がReferenceQueue「ガベージ コレクション」を取得した順序でキューに追加されるという保証は得られますか (あたかも GC を取得するかのように)。一つずつ)?コードは、何らかの保証があることを暗示しています。そうしないと、未処理の参照が理論的にキューに残る可能性があります。
ありがとう
java - GoogleコレクションAPIにはRubyEnumerable#injectメソッドと同等のものがありますか?
javadocを読みましたが、それに似たものは見つかりませんでした。
java - 述語で動作するコレクション反復をマルチスレッド化する方法は?
抽象化のために、私が持っていると仮定しましょう
キーは給与のしきい値です。または、Google コレクションに精通している人にとっては、Multimap のようになります。
各従業員の給与についてデータベース検索を行い、給与のしきい値よりも少ない場合は、その従業員をコレクションから削除します。できれば固定スレッドプールエグゼキューターを使用して、マルチスレッドでこれを行うにはどうすればよいですか?
繰り返しになりますが、Google コレクションに精通した人々にとっては、DB ルックアップを実行してコレクションをフィルター処理する Predicate を介して行われる場合は、大いに感謝します。
collections - マルチセットの実用的なユースケースを教えてください
いくつかの実用的なユースケースを知りたいです (プログラミング言語に関連していない場合は、より良いでしょう)。セット、リスト、およびマップを実用的なユースケースに関連付けることができます。
たとえば、必要な用語がアルファベット順にリストされ、場所/ページ番号が値である本の用語集が必要な場合は、コレクション TreeMap(OrderedMap which is a Map) を使用します。
どういうわけか、マルチセットを「実用的な」ユースケースと関連付けることはできません。誰かが使用法を知っていますか?
http://en.wikipedia.org/wiki/Multisetでは十分な情報が得られません:)
PS: これがコミュニティ ウィキ化されるべきだと思うなら、それは問題ありません。私がそれをしなかった唯一の理由は、「この質問に答える明確で客観的な方法がある」ということでした。
java - google-collections を使用した複数のキーと値
次のファイルを複数のキーと値を持つハッシュに保存するために google-collection を使用したいと思います
最初の 3 つの列は異なるキーで、最後の 2 つの整数は 2 つの異なる値です。行をチャンクでこぼしたコードをすでに準備しています。
残念ながら、これらの情報を google-collection に保存する方法がわかりません。
前もって感謝します。
よろしくお願いします、
java - Iterables.find および Iterators.find - 例外をスローする代わりに null を取得する
私はgoogle-collectionsを使用しており、述語を満たす最初の要素を見つけようとしています。そうでない場合は、「null」を返します。
残念ながら、要素が見つからない場合、Iterables.find と Iterators.find は NoSuchElementException をスローします。
今、私はすることを余儀なくされています
「try/catch」で囲んで同じことを行うことができますが、私のユースケースでは、要素が見つからない多くのケースに遭遇します。
これを行う簡単な方法はありますか?
java - CLASSPATH に Jar を持つ端末で Java コードをコンパイルする
CLASSPATH で google-collections を使用して、ターミナルで javac を使用してコードをコンパイルするにはどうすればよいですか?
ターミナルで javac を使用してコンパイルしようとするコードの例 (Eclipse で動作)
ターミナルでのコンパイル
私のクラスパス