問題タブ [range-map]
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 - Java で範囲内のキーの値を取得する
Java で次のようなマップがあるとします。
キーがソートされている場合(treemapまたはlinkedhashmapのいずれかを使用)。ここで、>=39および<41の値を取得しようとすると、文字列「39 to 41」を取得する必要があります。これを効率的に行うにはどうすればよいですか? ?
java - キーの範囲を値にマップできるデータ構造
値の範囲から特定の値を取り込んで、それをキーにマップするデータ構造を見つけようとしています。
たとえば、次の条件があります。
- 1から2.9まで、Aにマッピングしたいと思います。
- 4から6まで、Bにマッピングしたいと思います。
- 6.5から10まで、Cにマッピングしたいと思います。
値は5で、キーにマップしたいと思います。したがって、上記の条件に基づいて、Bにマップする必要があります。
問題を解決するために誰かが私に勧めることができるJavaのデータ構造はありますか?
現在、値をキーにのみマップできるハッシュテーブルを使用しています。値の範囲をハッシュテーブルに存在する特定の値にマップしようとしました。しかし、値の範囲を特定の値にマッピングするのに行き詰まりました。だから今、私は値の範囲をキーにマッピングする別の方法をしようとしています。誰かが私がこの問題を解決する方法を知っていますか?
編集:
Martin Ellisのおかげで、TreeMapを使用して問題を解決することにしました。
scala - Scalaの範囲/間隔マップ構造
キーの範囲を値にマップできるデータ構造で述べたのとほぼ同じ質問がありますが、Scala の場合です。
つまり、何らかの値v[i]にマップされる、重複しない 1D 範囲[a[i], b[i])の変更可能なシステムが必要です。この種の仕事を行うための標準的な基礎となるデータ構造は、赤黒木です。
私がしたい操作は、できればすべて O(log n) の複雑さを持つ必要があります。
- その中の任意のポイントを指定して、特定の範囲 (開始、終了、保存された値) またはその欠如を照会して取得します
- この構造に新しい範囲を挿入します
- 構造から範囲を削除する
したがって、これまでのところ、次の亜種が見られると思いますが、それらにはすべて短所があります。
- Java の TreeMap の上に独自のコンテナーを展開する- 迅速で汚れていますが、適切なメンテナンスが行われていないため、長期的にはおそらく問題があります
- Guava のRangeMapを使用- 可能ですが、Scala コレクションの世界ではかなり厄介です
- Scala の赤黒ツリーの実装を使用して独自のものを作成しようとしますが、Scala の TreeMapは不変のみであり、Java の TreeMap などの単純なルックアップ メソッドを欠いていることを考えると、それはかなり難しいと思います。
floorEntry
ここで何か不足していますか?基本的な Scala コレクションを拡張する Scala 中心の API を使用して、Guava のようによく管理されたコレクション拡張ライブラリはありますか?
強く関連する質問:
- Java TreeMap コードを Scala に移行しますか? - 「Java の TreeMap を使用するだけ」と言及し、他のことは忘れてください
- この問題の Java バージョン:
matlab - 範囲内のすべての要素を関数でマップするにはどうすればよいですか?
で範囲を定義できることがわかりました1:3
。関数を数値に適用することもできますsin(1)
。しかし、関数で数値の範囲をマップするにはどうすればよいですか? $1,2,3 \to sin(1), sin(2), sin(3)$.