問題タブ [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.

0 投票する
3 に答える
1508 参照

java - Google コレクションのサプライヤーと検索

null を返さない一連の Suppliers の最初の結果を返す Google Collections メソッドを探しています。

Iterables.find() の使用を検討していましたが、Predicate ではサプライヤを呼び出して結果を null と比較し、find メソッドがサプライヤを返したら再度呼び出す必要があります。

0 投票する
4 に答える
47148 参照

java - Googleコレクションを使用してリストをフィルタリングおよびソートする

リスト(またはセット)があるとします:

「src」で始まる用語が最初、「assoc」が 2 番目、「dest」が最後である自然な順序で用語をソート/グループ化する ImmutableList(Set) を取得したいと思います。用語にそれらが含まれていない場合は、結果のリストから削除する必要があります。

したがって、ここでの結果は「srcB」、「srcT」、「assocX」、「destA」です。

Iterables.filter または Predicates の組み合わせでこれを実行できると思いますが、表示されません。私が思うにそれを行う簡潔な方法があるに違いありません。

編集:リストの代わりにセットも機能します。

0 投票する
8 に答える
52455 参照

java - 要素の一意性を保証するキュー?

キューのように動作するが、キューの各要素が一意であることを確認するjava.util.QueueまたはGoogleコレクション内の何かの実装を探しています。(それ以上挿入しても効果はありません)

それは可能ですか、それとも私は手でそれをしなければなりませんか?

今のところ、LinkedList実装のキューを使用しており、挿入する前に一意性を確認します。(これを行うためにサイドマップを使用します。キューの前後にサイドマップから要素を追加/削除します)。あまり好きではありません。

どんな入力でも大歓迎です。java.utilパッケージに含まれていない場合は、それは悪い考えですか?

0 投票する
9 に答える
5511 参照

java - Java で非常に反復的なコードとドキュメントを管理する

コードの繰り返しが多いことは一般的に悪いことであり、これを最小限に抑えるのに役立つ設計パターンがあります。ただし、言語自体の制約により、避けられない場合もあります。から次の例を取り上げますjava.util.Arrays

上記のスニペットは、ソース コードに 8 回表示されます。ドキュメンテーション/メソッド シグネチャのバリエーションはほとんどありませんが、メソッド本体はまったく同じint[]short[]ルート配列型、、、、、、、、およびchar[]byte[]boolean[]double[]float[]Object[]

反省(それ自体はまったく別の主題です)に頼らない限り、この繰り返しは避けられないと私は信じています。ユーティリティ クラスとして、このように反復的な Java コードが非常に集中することは非常に非典型的であることは理解していますが、ベスト プラクティスを使用しても反復は発生します。リファクタリングは、常に可能であるとは限らないため、常に機能するとは限りません (明らかなケースは、繰り返しがドキュメントにある場合です)。

明らかに、このソース コードを維持することは悪夢です。ドキュメンテーションのわずかなタイプミス、または実装のマイナーなバグは、何回繰り返しても乗算されます。実際、最良の例はたまたまこの正確なクラスを含んでいます:

Google Research ブログ - おまけ、おまけ - すべてを読む: ほぼすべてのバイナリ検索とマージソートが壊れている (Joshua Bloch、ソフトウェア エンジニア)

このバグは驚くほど微妙なもので、単純で単純なアルゴリズムと多くの人が考えていたもので発生しています。

上記の行は、ソース コードで 11 回表示されます

だから私の質問は:

  • この種の反復的な Java コード/ドキュメントは、実際にはどのように処理されますか? それらはどのように開発、維持、およびテストされますか?
    • 「オリジナル」から始めて、できるだけ成熟させてから、必要に応じてコピーして貼り付け、間違いがなかったことを願っていますか?
    • 元のファイルで間違いを犯した場合は、コピーを削除して複製プロセス全体を繰り返すことに慣れていない限り、どこでも修正できますか?
    • そして、これと同じプロセスをテスト コードにも適用しますか?
  • Java は、この種の目的のために、使用が制限されたソース コードの前処理を行うことで利益を得るでしょうか?
    • おそらく Sun は、この種の反復的なライブラリ コードの作成、保守、文書化、およびテストを支援する独自のプリプロセッサを持っているのでしょうか?

コメントで別の例が要求されたので、Google Collections からこれを取得しました: com.google.common.base.Predicates行 276-310 ( AndPredicate) vs 行 312-346 ( OrPredicate)。

これら 2 つのクラスのソースは、次の点を除いて同一です。

  • AndPredicatevs OrPredicate(それぞれがそのクラスに 5 回出現)
  • "And("vs Or("(それぞれのtoString()方法で)
  • #andvs #or( @seeJavadoc コメント内)
  • truevs false(in apply;!は式の外に書き直すことができます)
  • -1 /* all bits on */0 /* all bits off */hashCode()
  • &=|=hashCode()
0 投票する
3 に答える
6908 参照

java - Google GuavaでInputStreamのInputSupplierを作成する簡潔な方法はありますか?

Google Guavaには、InputSuppliersを作成するためのファクトリメソッドがいくつかありますbyte[]

またはからFile

InputSupplier与えられたものを作成する同様の方法はありInputStreamますか?

つまり、匿名クラスよりも簡潔な方法です。

Files.copy(...)背景:egまたは。でInputStreamsを使用したいと思いByteStreams.equal(...)ます。

0 投票する
3 に答える
6905 参照

java - Google コレクションが Apache コレクションのように MultiKeyMap をサポートしないのはなぜですか?

SortedMultiSet Google による決定は(stackoverflow question)の決定と似ていますか、それとも 使用されていないためですMultiKeyMapか?

MultiKeyMapクラスメンバーとして複数のキーを含むキーとしてカスタムクラスを使用することもできることを認識しています。逆に、 の get を呼び出すときに複数のキーを指定するという概念が気に入っていますMultiKeyMap

Apache のバージョンMultiKeyMapは素晴らしいですが、Generics が非常に不足しているため、Google Collections を調べて最新の実装を探しました。Google がまだサポートしていない理由や、より良い代替手段がある場合は、返信してください。

0 投票する
2 に答える
1989 参照

java - Joiner はスレッドセーフですか?

google collections Joinerスレッドは安全ですか?

0 投票する
1 に答える
426 参照

java - マルチセットからコレクションのオカレンスを削除する

Multiset には、removalAllOccuring(Collection) (または類似の) メソッドが必要なようです。remove(Object,int)およびremoveAll(Collection)に類似したものです。その方法を除いて、その意図を達成するための最良の方法は何ですか。デモ用に小さな JUnit ドライバーを作成しました。

出力:

私が欠落している場合、またはコレクションをループして削除するよりも別の/より良い方法があるかもしれないと考えています。また、削除するコレクションがList

0 投票する
3 に答える
12748 参照

java - Java で Google コレクションの BiMap をインスタンス化するには

BimapGoogle コレクションのインスタンスを作成するにはどうすればよいですか?

質問Java: Instantiate Google Collection's HashBiMapを読みました

私のコードのサンプル

私は得るcannot instantiate the type BiMap<String, Integer>