問題タブ [trove4j]
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 - Guava Table の原始的な代替品
キーとしてジェネリック型の代わりにプリミティブを使用するGuava テーブルの代替手段はありますか?
プリミティブを使用して、Java Numbers と Java Maps によって作成された追加のエントリ オブジェクトを使用することによって引き起こされるオート ボクシングを回避したいと考えています。
Trove TLongObjectMapを使用して独自の基本的な LongLongObjectTable を作成しましたが、標準ライブラリが利用可能な場合はそれを使用することを好みます。
java - Trove ライブラリ キューの実装
Java プロジェクトで trove 3.0.3 ライブラリを使用しています。gnu.trove.queue のすべてのクラス (TByteQueue、TDoubleQueue ...) はすべてインターフェースです。Queue クラスの実装はどこにありますか?
java - 大きなトローブ コレクションを作成するときの異常な OutOfMemory
アプリの起動時に、容量が 75*10^6 のトローブ ロング ハッシュ セットを作成しています。
プロファイラーは、アプリが 1.4g を使用していることを示しています。-Xmx1600m を設定しようとすると、メモリ不足になります。
・Xmx2000mも同じ。
・Xmx2030mも同じ。
-Xmx2040m わかりました。
プロファイラーはそれほど大きな割り当てを認識しません。それはどこで、なぜ発生するのでしょうか?
java - TObjectIntMap (Trove 3) 「int get(java.lang.Object key)」メソッドはどのように null を返すことができますか? 書類の間違いですか?
Trove4j ライブラリのドキュメントを調べています。特にTObjectIntMap
インターフェース。ライブラリのドキュメントによるとnull
、キーがマップに存在しない場合、 get メソッドは戻ります。私が参照しているドキュメントは、ここで見ることができます:
http://trove4j.sourceforge.net/javadocs/gnu/trove/map/TObjectIntMap.html#get%28java.lang.Object%29
閲覧時(2014 年 2 月 27 日)のドキュメントには次のように記載されています。
int get(java.lang.Object key)
「指定されたキーがマップされている値を返します。このマップにキーのマッピングが含まれていない場合は null を返します。」
私の質問は:
null
戻り値の型がプリミティブの場合、メソッドはどのように戻ることができますかint
。私の知る限り、Integer
参照はnull
. ドキュメントのエラーですか?
java - 値を減らして GNU Trove TObjectIntHashMap を繰り返す推奨される方法は何ですか?
GNU Trove / trove4j TObjectIntHashMap は、文字列の出現回数をカウントするのに最適です。
現在、一般的なタスクは、カウントが最大の文字列を要求するか、カウントを減らして反復することです。これをどのように行いますか?
ありがとう、マルセル
java - HashMap から entrySet() メソッドを移植するホットtrove4jに?
メソッドごとにハッシュマップを反復処理することがよくありましたがentrySet()
、これがより高速であることを期待していました。ここで、コードの一部を trove の に移植したいと考えてTIntObjectHashMap
いますが、エントリを列挙する方法がわかりません。
なんで?ポートするには?
java - trove4j から TXXXXArrayList オブジェクトのサイズを設定するには?
Trove から TXXXXArrayList オブジェクトのサイズを設定するには? たとえば、サイズを設定することは可能TIntArrayList
ですか?
私が見つけた唯一の方法は、要素(ゼロ)を追加することです。プリミティブ配列の初期化または追加を可能にするバルク メソッドでさえ、要素ごとのコピーを実行します。つまり、作業が 2 倍になります。
プレーンなJavaで配列のサイズを設定することは可能ですが:
作成され、ゼロで埋められます。Trove は 2 回行います:
最初にプリミティブ配列を割り当て、それをクラス内にコピーします。
ワンステップで行う方法は?
アップデート
Wrap メソッドはスピードアップを可能にしますが、ペイオフとしての成長を禁止します:
更新2
容量はサイズではありません。以下のプログラムは、ゼロを出力してスローしArrayIndexOutOfBoundsException
ます:
java - Java でコマンドのコレクションをできるだけ速く実行する
私のプロジェクトでは、スクリプトから大量の関数をコレクションにロードして、それらを保持し、スクリプトを再度読み取らずに後で (おそらく何度も) 実行したいと考えています。関数へのアクセスをできるだけ高速にする必要があり、そのための 2 つの方法を考えました。
コマンド パターン: 最初のアイデアは、スクリプト コマンドをオブジェクト (コマンド パターン) としてコレクション内に保存し、スクリプトを実行する必要があるときに for-each-loop 内でそれらすべてを実行することでした。コードは読みやすくなりますが、オブジェクトを介してすべての異なるコマンドにアクセスするには、多くのパフォーマンスとメモリが必要になると思います。
for (Command command : commandList) { command.execute();
char のコレクションとケースの切り替え: 私の 2 番目のアイデアは、char や int などのプリミティブ変数をコレクションに格納し、ケースの切り替え構造を for-each ループ内に配置することでした。プリミティブを使用するのは、String オブジェクトよりも速いと思うからです。したがって、Trove のようなライブラリを使用します。コマンドオブジェクトにアクセスする必要がないため、この方法はコマンドパターンよりも高速になる可能性があると思います。さらに、占有されるメモリが少なくなります。一方、コマンドパターンは適切な関数に直接アクセスできるのに対し、switch-case コンストラクトは文字が a、b、c、d などであるかどうかを何度もチェックする必要があるため、遅くなる可能性があると思います。
for (char command : commandList) { switch(command){ case 'a': doA(); break; case 'b': doB(); break; case 'c': ... } }
片道の方が良いと思いますか?別の方法を知っていますか?どのタイプのコレクションをお勧めしますか?