1

キーワードを入力としてカテゴリIDを出力する関数を考案する必要があります。元:

f('dog') returns _ANIMAL
f('chair') returns _FURNITURE

私はすでにマッピングを持っていて、毎回タグ配列を繰り返すことができましたが、これは最善の解決策ではないと感じています。

この特定のタスクのために、Javaライブラリに特別なデータ構造(私は三分探索木を考えています)がありますか?HashMapを使用する必要がありますか(または(カテゴリが少ないため)Setを使用する必要があります)?

PSこのマッピングは修正されています。ビルド後に要素を追加したり、削除したりする必要はありません。

4

2 に答える 2

3

私があなたを正しく理解していれば、HashMapはまさにあなたが望むもののように聞こえます。多くの関数呼び出しや大きな配列を使用すると、プログラムの実行が遅くなるため、毎回配列全体を反復処理する必要はありません。HashMapを使用すると、キー(キーワード)から値(カテゴリ)を取得することは、ほぼ即座に、一定の時間で行われます。

次のようにマップを作成できます。

HashMap map = new HashMap();
map.put("dog", "animal");
map.put("chair", "furniture");
map.put("cat", "animal");

そして、map.get("dog")「動物」をmap.get("chair")返し、「家具」を返します。

他の人が示しているように、列挙型はこれでもうまく機能します(そして少し速くなります)。ただし、コンパイル時に修正されるため、実行中に変更することはできません。

于 2012-04-29T09:07:42.257 に答える
0

enum次のように変更できます。

public enum Things{
    _ANIMAL("Dog"), _FURNITURE("Animal"); 
    private String description;
    Things(String description){
        this.description= description;
    }
    public String toString(){
        return description;
    }
};

列挙型の文字列表現を取得したいときはいつでも、toString

例:

Things._ANIMAL.toString()出力します"Dog"

于 2012-04-29T09:27:53.797 に答える