0

次のようなグリッドにリソースを配布する必要がある問題に取り組んでいます。

|A|B|C
|X|C|X
|A|X|X

検索アルゴリズムを組み合わせて、問題の最善の解決策を見つけようとしています。アルゴリズムにより、グリッドで文字列値を処理する方が簡単です。ただし、最初のグリッドが確定したら、いくつかのプロパティにアクセスする必要があります。A がりんご用だとすると、りんごのサイズにアクセスする必要があるかもしれません。

だから私は今、クラスを果物にしました。初期化に必要な果物を追加しています。果物も実行時に追加する必要があるため、列挙することはできません。最初に試したことです。

ソリューションには 10000 回以上の試行が必要になる場合があるため、文字列を相互にチェックする方が、これらすべての文字列をオブジェクトにするよりも高速であると考えました。

今、私はこれを行う方法について頭を悩ませることができません。基本的に、果物を 1 か所で定義し、グリッドで「これはリンゴです」と簡単に言うことができるようにしたいと考えています。

編集:おそらく、それは実際には基本的なOOPの質問です。ユーザーがプログラム内から新しい種類のオブジェクト、たとえば新しい種類の果物を定義できるようにするにはどうすればよいですか?

4

1 に答える 1

1

文字列もオブジェクトであり、カスタム オブジェクトと同じようにフィールドとメソッドを使用します。では、カスタム オブジェクトを作成しない理由はありません。

果物の種類が実行時に「登録」されている場合は、果物の種類をint id表す を Fruit オブジェクトに入れ、 のようなプロパティの横に置き、もちろん、名前やその他の説明を各 ID に割り当てるdouble size別のグローバルを使用しますMap<int, String>Fruit. そのマップをいくつかの「フルーツ レジスタ」クラスにラップすることもできます。このクラスは、後続の整数を各 new idwithint newFruitType(String description)に割り当て、説明したマップにそれぞれのエントリを書き込み、新しく作成された を返しますid

重複を避けるために、「インデックス」Map<String, int>を使用すると、すべての ID と説明が格納されMap<int, String>ますが、今回は説明がキーになります。次に、登録クラスは、そのタイプをマップに配置する前に、要求されたそれぞれの新しい果物タイプの一意性についてインデックスをチェックします。果物の種類が UI を介して追加される場合、ユーザーを支援するために、インデックスの並べ替えられたコンテンツをそれぞれの追加フォームに表示することもできます。インデックスの内容をソートしたままにするために、いくつかのSortedMap<String, int>.

于 2013-09-24T08:40:11.420 に答える