問題タブ [linkedhashset]

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 に答える
155 参照

java - ユーザーIDの数が1000万になるまで、ファイルを新しい大きなファイルにマージします

1 つのフォルダに約 100 個のファイルがあります。各ファイルにはこのようなデータがあり、各行はユーザー ID に似ています。

そして、その新しい大きなファイルでユーザーIDの総数が1000万になるまで、そのフォルダーから新しい大きなファイルにファイルをマージし続けようとしています。

特定のフォルダーからすべてのファイルを読み取ることができ、リンクされたハッシュセット内のそれらのファイルからユーザー ID を追加し続けます。そして、ハッシュセットのサイズが 1,000 万であるかどうかを確認し、1,000 万の場合は、それらすべてのユーザー ID を新しいテキスト ファイルに書き込むことを考えていました。それは実現可能な解決策ですか?

その 1000 万という数字は構成可能である必要があります。将来、その 1000 万 1o 50Million を変更する必要がある場合は、それができるはずです。

以下は私がこれまでに持っているコードです

これについて何か助けていただけますか?そして、同じプロセスを行うためのより良い方法はありますか?

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

java - LinkedHashSet に挿入された最新の要素を効率的に取得する

LinkedHashSetの Javadoc によると、内部で双方向リンク リストを使用して、挿入された要素の挿入順序を保持します。

すべてのエントリを実行する二重リンク リストを維持します。このリンクされたリストは、要素がセットに挿入された順序 (挿入順序) である反復順序を定義します。

最初に挿入された要素を取得したい場合は、次のようなコードを使用できます。

これにより、O(1) のセットに最初に挿入された要素が得られます。

O(1)のセットに挿入された最新の要素にアクセスする必要がある問題を解決しようとしています。セットに挿入された要素が重複していないと仮定しましょう。例えば、

セット内の双方向リンク リストであるため、最新の要素は双方向リンク リストの最後の要素である必要があり、それを取得する API があれば O(1) でアクセスできるはずです。

私の質問は: JDK でこれを行う方法はありますか、またはこれを行うには独自の ReversedIteratingLinkedHashSet を作成する必要がありますか?

基本的に、挿入/削除/検索/セットに最後に挿入された要素のチェックなど、すべての操作で O(1) 時間の複雑さを持つセット データ構造を見つけようとします。組み込みの LinkedHashSet は、内部的に非常に小さな変更を加えるだけでうまく収まるように見えますが、これがデフォルトの JDK クラス API で実行できるかどうかはわかりません。

注: JDK のソース コードを確認したところ、LinkedHashSet が LinkedHashMap で内部的に実装されていることがわかりました。LinkedHashMap を使用して O(1) に挿入された最新の要素にアクセスできるソリューションがあれば、それは私にとっても役立ちます。

どうもありがとう。

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

linkedhashset - Hashsetを使用してLinkedhashsetを作成するには?

「Hashset を使用して Linkedhashset を作成するにはどうすればよいですか?」というインタビュー中に、この質問をされました。誰も答えを知っていますか?

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

java - Java: 未チェックの変換が必要な java.util.Collection を修正できません

私は文字列のベクトルoldVを持っており、同一であるがすべての重複が削除された 2 番目のベクトルが必要です。以下は、コンパイルされ、重複が削除された Vector になるという意味で機能します。

ただし、2 つの未チェックの変換警告が生成されます。

どちらの場合も、^ は "new LinkedHashSet.

これらの警告を修正する方法がわかりません。

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

java - Android HashSet は LinkedHashSet にキャストできません

次のサンプルコードがあります。アプリケーションは初回で正常にインストールされます。ただし、再インストールするとエラーがスローされます。

アプリケーションの再インストール時に発生したエラーを以下に貼り付けました。

LinkedHashSet保存したを にキャストできない理由を理解したいLinkedHashSetHashSetまた、Android によって自動的に変換されるのはなぜですか?

0 投票する
0 に答える
317 参照

java - Java -- キーによって値にアクセスし、キーと値のペアの順序を維持する

キーと値のペアのシーケンスを処理し、それらをSet、またはむしろとして返しますLinkedHashSet。同じキーを持つ要素をマージし、値を処理します。私が生成する出力は、入力のキーのシーケンスを保持します。

私は2つの選択肢を考えることができます:

1.) ですべて実行しLinkedHashMap、結果を に変換しLinkedHasSetます -- をコレクションにロードし、LinkedHashMapそのコレクションから を作成しますLinkedHashSet

2.) aHashMapと aを使用しLinkedHashSetます。 HashMap処理用です-値にすばやくアクセスして更新し、LinkedHashSetキーのシーケンスを維持し、キーの一意性を確保します。最後に、 から最終的な値を読み取り、HashMap別の を作成しますLinkedHashSet。今回は、キーだけでなく、キーと値のペアを作成し、それを配信します。

(1) は (2) にかなり有利に思えます。

理想的にはLinkedHashSet、キーと値のペアを aLinkedHashSetに保持しますが、その要素をキーのみで処理できるようにするために、すべてを a で実行できるようにします。

i.) 値のペアにアクセスする、および ii.) キーの一意性を維持する

キーと値のペアではなく、キーで。しかしLinkedHashSet、それはありません。API にはそれを行うための他の構造はありません。

ここで何か不足していますか?

他のオプションはありますか?

前もって感謝します。

APIについてはそれほど鋭くない--確認したい.

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

java - LinkedHashset で使用される基になる HashMap の値として Jackson ObjectMapper - java.lang.object を使用してシリアル化を行うと ClassCastException が発生する

はい、タイトルはかなり紛らわしいです、私は知っています!

タイプ MyClass の LnkedHashSet をシリアル化するために Jackson ObjectMapper を使用しています。これは、そのHashSetに物が追加される方法です

ここで、Jackson がこれをシリアライズしようとすると、java.lang.Object を MyClass にキャストできないという ClassCastException がスローされます。LinkedHashSetの「追加」が何をするかをデバッグし、キーをMyClassとして、値をダミーオブジェクトとしてマップに追加します

したがって、Jackson が取得する最終的な LinkedHashSet には HashMap が含まれており、これは MyClass-Object のキーと値のペアであり、この Object は私に悪夢をもたらします。

これに取り組む方法についてのアイデアは高く評価されます。私は初心者で、誰かが助けてくれたらうれしいです、ありがとう!

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

java - Javaでリンクされたハッシュセットから要素を削除するには?

リンクされたハッシュセットから要素を削除するさまざまな方法を知りたいです。次のコードを試しました

私は次の出力を得ました

何が恋しい?前もって感謝します。

PS iterator.remove() メソッドも試しましたが、 Illegal State Exception が発生しました

編集

イテレータ削除メソッドを使用する必要があることを知りました。では、Link Hash Set remove メソッドの使用とは何ですか? どのような場合にこの方法を使用する必要がありますか?