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

9
地図で広告掲載順序の問題を伝える方法は?
データベースから一連のタプルを取得して、マップに入れています。データベースクエリは高価です。 マップ内の要素の明らかな自然な順序付けはありませんが、それでも挿入順序は重要です。マップの並べ替えは重い操作になるため、クエリ結果が既に希望どおりに並べ替えられている場合は、それを避ける必要があります。したがって、クエリ結果をに保存LinkedHashMapし、DAOメソッドからマップを返します。 public LinkedHashMap<Key, Value> fetchData() processDataマップ上で何らかの処理を行うメソッドがあります。いくつかの値を変更し、いくつかの新しいキー/値を追加します。次のように定義されます public void processData(LinkedHashMap<Key, Value> data) {...} ただし、いくつかのリンター(ソナーなど)は、「データ」のタイプは「LinkedHashMap」(squid S1319)の実装ではなく、「Map」などのインターフェースであるべきだと文句を言います。 だから基本的には私が持っているべきだと言っている public void processData(Map<Key, Value> data) {...} しかし、メソッドのシグネチャには、マップの順序が重要であると言うようにしたい-それはアルゴリズムにとって重要であるprocessData-したがって、私のメソッドはランダムなマップだけに渡されない。 を使用したくないのはSortedMap、(のjavadocからjava.util.SortedMap)「キーの自然な順序に従って、またはソートされたマップ作成時に通常提供されるComparatorによって順序付けられる」ためです。 私のキーには自然な順序がありません。コンパレータを作成して何もしないのは冗長です。 そして、putキーの重複などを回避するために活用するために、それがマップであることを依然として望んでdataいますList<Map.Entry<Key, Value>>。 それで、私のメソッドはすでにソートされたマップを必要としていると言うにはどうすればいいですか 残念なことに、java.util.LinkedMapインターフェースはありません。そうでなければ、私はそれを使用していました。
24 java  code-quality  map 

6
関数とswitchステートメントのマップ
私はリクエストを処理するプロジェクトに取り組んでおり、リクエストにはコマンドとパラメーターの2つのコンポーネントがあります。各コマンドのハンドラーは非常にシンプルです(<10行、多くの場合<5)。少なくとも20のコマンドがあり、50を超える可能性があります。 私はいくつかの解決策を考え出しました: コマンド上の1つの大きなスイッチ/ if-else 機能へのコマンドのマップ 静的クラス/シングルトンへのコマンドのマップ 各コマンドは少しエラーチェックを行い、抽象化できるビットは、各コマンドに定義されているパラメーターの数をチェックすることだけです。 この問題の最善の解決策は何ですか?また、その理由は何ですか?また、私が見逃したかもしれないデザインパターンにもオープンです。 それぞれについて、次の賛否両論のリストを作成しました。 スイッチ 長所 すべてのコマンドを1つの関数に保持します。シンプルなので、これは視覚的なルックアップテーブルになります 1か所でしか使用されない大量の小さな関数/クラスでソースを乱雑にする必要はありません。 短所 とても長い プログラムでコマンドを追加するのが難しい(デフォルトのケースを使用してチェーンする必要がある) マップコマンド->関数 長所 小さい一口サイズのチャンク プログラムでコマンドを追加/削除できる 短所 インラインで行う場合、スイッチと視覚的に同じ インラインで行われない場合、多くの機能が1か所でのみ使用されます マップコマンド->静的クラス/シングルトン 長所 ポリモーフィズムを使用して単純なエラーチェックを処理できます(3行だけですが、それでも) マップと同様のメリット->機能ソリューション 短所 多くの非常に小さなクラスがプロジェクトを混乱させます 実装がすべて同じ場所にあるわけではないため、実装をスキャンするのは簡単ではありません 追加のメモ: 私はGoでこれを書いていますが、ソリューションは言語固有のものではないと思います。他の言語でも非常に似たようなことをする必要があるかもしれないので、私はより一般的な解決策を探しています。 コマンドは文字列ですが、便利であれば、これを簡単に数値にマップできます。関数のシグネチャは次のようなものです。 Reply Command(List<String> params) Goにはトップレベルの機能があり、私が検討している他のプラットフォームにもトップレベルの機能があるため、2番目と3番目のオプションの違いがあります。

4
「クラスの代わりにマップを使用してデータを表現する」-リッチヒッキー
でリッチヒッキーことで、このビデオ、Clojureの作成者、彼はJavaで行ったように、代わりにそれを表現するためにクラスを使用してのデータを表現するためにマップを使用することを助言します。単にマップとして表されている場合、APIユーザーはどのように入力キーを知ることができるのか、私はそれがどのように改善できるのか理解していません。 例: PersonAPI { Person addPerson(Person obj); Map<String, Object> addPerson(Map<String, Object> personMap); } 2番目の関数では、APIユーザーはどのようにして人を作成するための入力を知ることができますか?
19 java  design  class  clojure  map 

1
エンティティの代わりにDTOを使用するとどうなりますか?
私はRCPアプリケーションに取り組んでいます。このアプリケーションは初めてです。 Spring Beanは、エンティティを保存/取得するビジネスロジックを記述するために使用されます。 ただし、エンティティを直接クライアントに送信する代わりに、DTOに変換してクライアントにデータを入力しています。保存中に、再びDTOをエンティティに変換して保存します。 これらの変換の利点は何ですか?誰か説明できますか?
18 java  spring  entity  map  dto 


1
すべてのOpenStreetMapデータをインデックス付きの方法で効率的に保存するにはどうすればよいですか?
私が持っているPBFファイル国に関する以下の情報が含まれています。 それぞれ独自の経度、緯度、プロパティを持つノード。2Dスペースにポイントを格納するために使用されます。 それぞれのプロパティを持つ方法は、ノードを介して接続されます。道路、境界を保存するために使用されます。 このファイルの圧縮形式は80 MBですが、圧縮解除してDBに保存すると、592 MBになります。 ええ、それはベルギーだけの国のためのものです。フランス、ドイツ、イタリアを一緒に保管することを想像してください。 たとえば、アントワープからブリュッセルを通ってシャルルロワまでの単一の高速道路を見てみましょう。これは、高速道路のすべてのターンを格納するための大量のノードで構成されますが、これらすべてのターンが必要ですか?疑わしい。 私が何ができるようになりたいのか教えてみましょう: さまざまなズームレベルで地図を表示したい。少なくとも大都市、小都市、街路レベル。 2点間のルーティング情報を取得できるようにしたい。 GPS位置に最も近い道路を計算できるようにしたい。 データベース内のインデックスを使用して、場所を検索します。 ただし、最も重要なのは、データベースがモバイルデバイスに保存されるため、データベースが大きくなりすぎないことです。 そこで、2つの手法の組み合わせについて考えました。 すべての個々のノードの保存/処理を回避するための、表示目的の画像タイル。 道路に関する情報とともに、ルート情報の道路の端点を保存します。 この問題は、この情報だけではGPS位置に最も近い道路を計算できないことです。高速道路の曲がりを想像すると、2つの端点だけで高速道路にいると判断できません。エンドポイント間で中間ノードを保存することを考えていましたが、生成には非常にコストがかかると思います。また、道路の端点(Tスプリットのようなもの)を決定することは、T字型スプリットの上部に中点を保存する必要があるかどうかを理解する必要があるため、それほど簡単なことではありません。 したがって、画像タイルを使用すると表示が簡単です。しかし、ルーティングとGPS位置検索を行う簡単な方法を見つけることができません。どのようなストレージテクニックを検討する必要がありますか?80 MBファイルがのデータベースに変わるのは少し不便592 MBですが、そのサイズをできるだけ小さくしたいと思います... これをできるだけ効率的に行うにはどうすればよいですか?ディスクとCPUに関して。WP7をターゲットにしています...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.