質問

キー/値の情報を何らかのタイプのコレクションに保存する必要があります。 C#では、次のような辞書を定義します。

var entries = new Dictionary<string, int>();
entries.Add("Stop me", 11);
entries.Add("Feed me", 12);
entries.Add("Walk me", 13);

次に、値にアクセスします:

int value = entries["Stop me"];

Javaでこれを行うにはどうすればよいですか? ArrayListの例を見てきましたが、可能であればジェネリックを使用したソリューションが必要です。

役に立ちましたか?

解決

Map

を使用します
Map<String, Integer> m = new HashMap<String, Integer>();
m.put("Stop me", 11);
Integer i = m.get("Stop me"); // i == 11

最後の行では、次のように言うことができました。

int i = m.get("Stop me");

(Javaの自動ボックス化解除を使用)の略記:

int i = m.get("Stop me").intValue()

指定されたキーのマップに値がない場合、getnullを返し、この式はNullPointerExceptionをスローします。したがって、この場合、ボックス型 Integerを使用することを常にお勧めします

他のヒント

java.util.Mapを使用します。いくつかの実装があります:

  • HashMap:O(1)ルックアップ、キーの順序を維持しません
  • TreeMap:O(log n)ルックアップ、キーの順序を維持するため、保証された順序でキーを反復処理できます
  • LinkedHashMap:O(1)ルックアップ。キーがマップに追加された順にキーを反復処理します。

次のように使用します:

Map<String,Integer> map = new HashMap<String,Integer>();
map.put("Stop me", 11);
map.put("Feed me", 12);

int value = map.get("Stop me");

コレクションをさらに便利に使用するには、 Googleコレクションライブラリ。素晴らしいです。

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("Stop Me", 11);
map.put("Feed Me", 12);
map.put("Walk Me", 13);
Integer x; // little hack
int value = (x = a.get("aaa")) == null? 0 : x;

代替として、Enumを試すことができます:

enum Action {

    STOP(11),
    FEED(12),
    WALK(13);

    private final int value;

    private Action(int value) {
        this.value = value;
    }

    public int value() {
        return value;
    }

    public static Action valueOf(int value) {
        for (Action action : values()) {
            if (action.value == value) {
                return action;
            }
        }

        return null; // or a null-object
    }
}

テスト:

public void action() {
    Action action = Action.valueOf("FEED"); 
    // or Action.FEED for more compile-time safety
    int value = action.value();
    // instantiating by code 
    Action walk = Action.valueOf(13);
}

間違いなくHashMapが必要です。これはJavaバージョンのC#Dictionaryです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top