タグ付けされた質問 「hashmap」

ハッシュ関数を使用して、キーと呼ばれる識別値を関連する値にマッピングするデータ構造

7
Rでの辞書/リストの操作
ささいな質問があります。Rで辞書データ構造が見つからなかったため、代わりにリストを使用しました( "word"-> numberのように)。だから、今のところ、キーのリストを取得する方法に問題があります。誰か知ってる?
89 r  list  hashmap  lookup 


7
JavaScriptハッシュマップはどのように実装されていますか?
私は現在OpenLayersを使用しており、ベクターレイヤー(100000を超えるベクター)に描画するための膨大なデータセットを持っています。 現在、これらすべてのベクトルをJavaScriptハッシュマップに入れて、パフォーマンスを分析しようとしています。JavaScriptのハッシュマップがどのように実装されているのか知りたいのですが、それは実際のハッシュ関数ですか、それとも単純なデータ構造と検索アルゴリズムを使用するラップされた関数ですか?


5
固定サイズのHashMapの最適な容量と負荷率はどれくらいですか?
特定のケースに最適な容量と負荷率を見つけようとしています。その要点はわかったと思いますが、それでも私より知識のある方からの確認はありがたいです。:) HashMapが100個のオブジェクトを含むようにいっぱいになり、ほとんどの時間を100個のオブジェクトを持つことに費やすことがわかっている場合、最適な値は初期容量100と負荷係数1だと思いますか?または、容量101が必要ですか、それとも他に問題がありますか? 編集:わかりました、私は数時間を取っておき、いくつかのテストを行いました。結果は次のとおりです。 不思議なことに、容量、容量+ 1、容量+ 2、容量-1、さらには容量-10でも、まったく同じ結果が得られます。少なくとも容量1と容量10の方が悪い結果になると思います。 (デフォルト値の16を使用するのではなく)初期容量を使用すると、put()が大幅に改善され、最大30%高速になります。 負荷係数1を使用すると、少数のオブジェクトで同等のパフォーマンスが得られ、多数のオブジェクト(> 100000)でパフォーマンスが向上します。ただし、これはオブジェクトの数に比例して改善されるわけではありません。結果に影響を与える追加の要因があると思います。 get()のパフォーマンスは、オブジェクト/容量の数によって少し異なりますが、ケースごとにわずかに異なる場合がありますが、通常、初期容量や負荷率の影響を受けません。 EDIT2:私の側にもいくつかのチャートを追加します。これは、HashMapを初期化して最大容量まで埋めた場合の、負荷率0.75と1の違いを示しています。yスケールはミリ秒単位の時間(小さいほど良い)であり、xスケールはサイズ(オブジェクトの数)です。サイズは直線的に変化するため、必要な時間も直線的に増加します。 だから、私が得たものを見てみましょう。次の2つのグラフは、負荷率の違いを示しています。最初のグラフは、HashMapが容量いっぱいになったときに何が起こるかを示しています。サイズ変更により、負荷率0.75のパフォーマンスが低下します。しかし、それは一貫して悪化しているわけではなく、あらゆる種類のバンプとホップがあります-これにはGCが大きな役割を果たしていると思います。負荷率1.25は1と同じように機能するため、グラフには含まれていません。 このグラフは、サイズ変更により0.75が悪化したことを示しています。HashMapを半分の容量まで満たすと、0.75は悪くはなく、ただ...違います(そして、使用するメモリが少なくなり、反復パフォーマンスが明らかに向上するはずです)。 もう1つお見せしたいことがあります。これは、3つの負荷係数すべてと異なるHashMapサイズのパフォーマンスを取得することです。負荷係数1の1つのスパイクを除いて、わずかな変動で一貫して一定です。それが何であるかを本当に知りたいです(おそらくGCですが、誰が知っていますか)。 そして、興味のある人のためのコードは次のとおりです。 import java.util.HashMap; import java.util.Map; public class HashMapTest { // capacity - numbers high as 10000000 require -mx1536m -ms1536m JVM parameters public static final int CAPACITY = 10000000; public static final int ITERATIONS = 10000; // …
85 java  hashmap 

10
超高性能C / C ++ハッシュマップ(表、辞書)[クローズ]
閉まっている。この質問は、StackOverflowのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、StackOverflowのトピックになります。 5年前に閉鎖されました。 この質問を改善する 高性能ハッシュマップデータ構造で値を構造化するには、プリミティブキー(int、おそらくlong)をマップする必要があります。 私のプログラムにはこれらのマップが数百あり、各マップには通常最大で数千のエントリがあります。ただし、マップは常に「更新」または「チャーン」されます。何百万もの処理を想像addし、delete第二のメッセージ。 CまたはC ++のどのライブラリが、このユースケースに適合するデータ構造を持っていますか?または、独自に構築することをどのように推奨しますか?ありがとう!

7
あるJavaハッシュマップコンテンツにAllを配置するが、既存のキーと値を置き換えない方法は?
すべてのキーと値を1つのAハッシュマップから別のBにコピーする必要がありますが、既存のキーと値を置き換える必要はありません。 それを行うための最良の方法は何ですか? 代わりに、keySetを繰り返して、存在するかどうかを確認することを考えていました。 Map temp = new HashMap(); // generic later temp.putAll(Amap); A.clear(); A.putAll(Bmap); A.putAll(temp);
83 java  map  hashmap 

4
LinkedListまたはArrayListでHashMapを使用する場合、またはその逆の場合
要素の数に関係なく、add、remove操作でArrayListやLinkedListよりもはるかに効率的であるにもかかわらず、HashMapを常に使用できるとは限らない理由は何ですか。 私はそれをグーグルで検索し、いくつかの理由を見つけましたが、HashMapを使用するための回避策は常にあり、利点はまだ残っています。

12
Java HashMap keySet()の反復順序は一貫していますか?
MapのkeySet()メソッドから返されるSetは、特定の順序を保証するものではないことを理解しています。 私の質問は、それは複数の反復にわたって同じ順序を保証するかどうかです。例えば Map<K,V> map = getMap(); for( K k : map.keySet() ) { } ... for( K k : map.keySet() ) { } 上記のコードでは、マップが変更されていないと仮定すると、keySetに対する反復は同じ順序になります。Sunのjdk15を使用することはありません同じ順序で反復するが、私はこの動作に依存する前に、私はすべてのJDKが同じことをするでしょうかどうかを知りたいのです。 編集 答えから、私はそれに頼ることができないことがわかります。残念な。注文を保証するために新しいコレクションを作成する必要がないことを望んでいました。私のコードは、繰り返し処理し、いくつかのロジックを実行してから、同じ順序で再度繰り返し処理する必要がありました。keySetから新しいArrayListを作成するだけで、順序が保証されます。

5
ハッシュマップのハッシュマップを初期化するコードの繰り返しを回避するにはどうすればよいですか?
すべてのクライアントにはIDと多くの請求書があり、日付ごとに請求書のハッシュマップのIDごとのクライアントのハッシュマップとして保存されています。 HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.get(id); if(allInvoices!=null){ allInvoices.put(date, invoice); //<---REPEATED CODE }else{ allInvoices = new HashMap<>(); allInvoices.put(date, invoice); //<---REPEATED CODE allInvoicesAllClients.put(id, allInvoices); } Javaソリューションは使用するようgetOrDefaultです: HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.getOrDefault( id, new HashMap<LocalDateTime, Invoice> (){{ put(date, invoice); }} ); しかし、getがnullでない場合でも、put(date、invoice)を実行したいので、「allInvoicesAllClients」にデータを追加する必要があります。だからそれはあまり役に立たないようです。
27 java  java-8  hashmap 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.