2016-11-14 5 views
-1

2つの文字列値を使用してHashMapを作成したいとします。最初の文字列値は、いくつかの「モード」であり、2つ目の文字列値は、例えば、いくつかの「国家」である:Javaハッシュマップの設定と取得

「TRACK」モードが「無効」である

私は定義された複数持つHas​​hMapを作成したいです各モードに対応する「状態」が「有効」または「無効」から変更されます。これは今まで私が持っているものです:

public class SystemModeStatus{ 

    private Map<String String> map = new HashMap<String,String>(){ 
     { 
     put("MODE_A", "STATE"); 
     put("MODE_B", "STATE"); 
     put("MODE_C", "STATE"); 
     } 
    }; 

    public SystemModeStatus(Map<String, String> m){ 
     this.map = m; 
    } 

    public Map<String, String> getMap(){ 
     return this.map; 
    } 
} 

ここで私がしたいのは、各 "モード"の "状態"を取得/設定することです。しかし、私は適切な構文を見つけることができないようです..私はこれに正しくアプローチしていますか?私のプロセスを複雑にしている間違っていることがあるのですか?

ありがとうございます。

+0

なぜマップではなく列挙型ですか? –

+0

あなたはゲッターとセッターを書くことになっています。 setterで、指定された値をマップ内の指定されたキーに入れ、getterでマップ内の指定されたキーの値を返します。マップの使い方を知っていますか? – RealSkeptic

+1

あなたのコードは意味をなさない。プライベートマップを定義し、それを使用せずにコンストラクタで上書きします。 – Quagaar

答えて

3

まず、getMap()メソッドを削除して、内部マップにできるだけ少ないメソッドを公開してください。

その後、あなたはマップ内の値を更新するためのメソッドを追加することができます:ここ

public void set(String mode, String status) { 
    this.map.put(mode, status); 
} 

public String getStatus(String mode) { 
    return this.map.get(mode); 
} 

さらに詳しい情報:https://docs.oracle.com/javase/8/docs/api/java/util/Map.html

+1

これは多くの助けになりました。 putメソッドがエラーを解決しました。どうもありがとうございました! – KyleKW

2

を使用すると、各「モード」の「状態」を取得したい場合は、foreachのを使用することができますあなたが行うことができますexempleのために自分のメインクラスで

public static void printState(Map mp) { 
     Iterator it = mp.entrySet().iterator(); 
     while (it.hasNext()) { 
      Map.Entry pair = (Map.Entry)it.next(); 
      System.out.println("State : "+ pair.getValue()); 

     } 
    } 

:あなたが他のjava8を使用している場合は、イテレータを使用することができます

SystemModeStatus systemModeStatue = new SystemModeStatus() 
printState(systemModeStatue.getMap()); 
関連する問題