問題タブ [java-collections-api]

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 投票する
2 に答える
293 参照

java - Collection の Iterator が remove() をサポートしているかどうかを知る方法は?

すべての Javaは をCollection実装するため、オプションのメソッドを指定する をIterable提供する必要があります。でが呼び出されると、をスローできます。Iteratorremove()remove()IteratorUnsupportedOperationException

コードを実行せずCollectionに、Java 標準ライブラリの がIteratorサポートする を返すかどうかを知るにはどうすればよいですか?remove()

もちろん、この情報remove()はクラスのメソッドの Javadoc にあると思っていましたが、代わりにスーパークラスとインターフェースへのリンクがたくさん見つかりました。例: http://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#iterator--リンクをたどっても明確な説明は見つかりませんでした。

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

java - 設定する理由付加価値のソートですか?

値を追加し始めると、Set<Integer>ソート要素が得られます。次の例を参照してください。

ここで sorting を取得しSet [0, 1, 2]ます。オブジェクトに追加するときに値を取得したいと思いgeneratedます。

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

java - JVM 空間の複雑さの詳細: 単方向リンク リストと双方向リンク リスト

私は、学生 (私はこのコンテキストではティーチング アシスタントです) が独自のバージョンの単方向リンク リスト (SLL) を実装し、それを二重リンク リストの Java 標準ライブラリ実装と経験的に比較しなければならないという奇妙な状況に遭遇しました。

そして、それが奇妙なところです.複数の学生が、同じタイプの同じ数の要素を含む SLL と比較して、DLL プロファイルが約 0.5% 余分なスペース使用率であることに気付いているのを見てきました。データ構造の基本的な分析では、SLL にはノードごとに 2 つの参照 (次の要素への 1 つと含まれる値への 1 つ) があるのに対し、DLL には 3 つ (前の要素への追加の 1 つの参照) があることがわかります。つまり、ノードあたりのスペース使用量が 50% 増加します (含まれる値のサイズを無視します)。

含まれる値はほとんどが整数値オブジェクトなので、含まれる値のサイズはここではあまり重要ではないと思います。

この2 桁の違いの原因は何ですか? 「JVM/コレクションライブラリの最適化」がすべての違いをカバーできるかどうかは完全にはわかりません。そうでなければ、JVM/Java std lib の最適化の地獄にならなければなりません。

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

java - ハッシュマップを使ったじゃんけんゲーム

私はプログラミング クラスでじゃんけんゲームに取り組んでおり、教授は を使用しhash mapてユーザーのパターンを保存することを望んでおり、timesそのパターンは で発生しましたhash map

そこでPattern、値の配列を保持するクラスを作成し、そのComputerクラスでそれをhash map. プログラムが機能するように意図した方法は、プログラムが最初generate a moveに の に基づいているpatternsことhash mapです。マップが空の場合、ランダムな動きが生成されます。次に、ユーザーが移動を行った後、その移動が配​​列に入れられて新しいパターンが作成され、パターンがハッシュ マップに保存されます。パターンがすでにマップ内にある場合は、発生回数が増加します。

予測される動きは、ユーザーの最後の 3 つの動きをマップ内のパターンと比較して作成され、ユーザーが次に投げる可能性のある動きを確認します。したがって、ユーザーの最後の 4 つの動きが次R P S Rの場合、プログラムは取得P S Rして追加しR P S、それらのパターンがマップにあるかどうかを確認します。そうである場合、どれが最も発生する可能性が高いかを確認します。その後、ユーザーがR次にプレイすると、配列が更​​新されP S R Rてパターンが続行されます。

したがって、初心者モードは空のマップから開始し、ベテラン モードは以前に保存したマップをロードすることです。ただし、いくつかの問題に遭遇しました。

  1. パターンをハッシュ マップに入力した後put、それを反復処理して、マップ内に格納されているパターンを確認すると、すべてのパターンが同じであり、それが発生するとは想定されていないことがわかります。パターンはR -> R P - > R P S(ユーザーがじゃんけんをそれぞれ投げた場合) であると想定されていますが、現在はR P S -> R P S -> R P S. これは、Computer の getSize() で確認できます。
  2. NullPointerException4回目の移動の後に出くわしました。前の質問を解決できれば問題は解決するかもしれませんが、なぜそれが起こるのかわかりません。
  3. ファイルからマップを読み取ろうとすると警告が表示されるので、警告がプログラムを混乱させる可能性があるかどうか疑問に思っていました。
    Unchecked cast from Object to HashMap<Pattern, Integer>

私のプログラムで何がうまくいかなかったのかについての助けや指針をいただければ幸いです。

コンピューター:

パターン:

主要:

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

java - jdk コード スタイルが変数の割り当てを使用し、同じ行で読み取る理由 - たとえば。(i=2) < 最大

jdk ソース コード、より具体的にはコレクション フレームワークでは、式で変数を読み取る直前に変数を割り当てることが優先されることに気付きました。それは単純な好みですか、それとも私が気づいていないもっと重要なことですか? 考えられる理由の 1 つは、変数がこの式でのみ使用されていることです。

私はこのスタイルに慣れていないので、読むのが難しいと思います。コードは非常に凝縮されています。以下に、から取られた例を見ることができますjava.util.HashMap.getNode()

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

java - List の contains() メソッドが期待どおりに機能しない

メソッドのAPIはcontains()言う

"このリストに指定された要素が含まれている場合に true を返します。より正式には、(o==null ? e==null : o.equals(e)) のような要素 e がこのリストに少なくとも 1 つ含まれている場合にのみ、true を返します。"

equals()クラスのメソッドをオーバーライドしましたが、contains()チェックすると false が返されます

私のコード

クラスの背後にある悪い概念を許してください。しかし、私は自分の概念の理解をテストしていました。

これを試してみるとfalse、 equals がオーバーライドされていても印刷されます

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

java - AbstractMap を拡張する Java のスキップ リスト

Javaでスキップリストを実装する必要があります。スキップ リストの仕組みはわかっていますが、AbstractMap を拡張する必要があります。したがって、クラス SkipList は次のようになります

AbstractMap を拡張する必要がある方法がわかりません

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

java - 並行パッケージで並行変更例外がスローされないのはなぜですか?

のようなクラスConcurrentHashmapは、この例外をスローしません。なぜ?この例外を回避するために、彼らは内部で何をしていますか? 並行 API のすべてのクラスでこれを防ぐにはどうすればよいですか?