0

HashMap で一意の変数を検索するコードを作成しましたが、機能していないように見えますか? 各ソーセージの種類の周波数を印刷できるようにしたいと思います。

    if(sausagesEaten.isEmpty()) { //if the HashMap is empty
        System.out.println("No sausages have been eaten");
        System.out.println("======================================================="); ; 
    }
    else{
        HashMap<ArrayList, String> sausagesEaten = new HashMap<ArrayList, String>();
        for (String key : sausagesEaten) {
              System.out.println(key + ": " + Collections.frequency(saustype, key));
        }
        System.out.println(" ");
    }
4

2 に答える 2

0

コードの上位にsausagesEatenという名前のデータが入力されたHashMapがすでにあると仮定します。

変化する:

 if(sausagesEaten.isEmpty()) { //if the HashMap is empty
    System.out.println("No sausages have been eaten");
    System.out.println("======================================================="); ; 
}
else{
    HashMap<ArrayList, String> sausagesEaten = new HashMap<ArrayList, String>();
    for (String key : sausagesEaten) {
          System.out.println(key + ": " + Collections.frequency(saustype, key));
    }
    System.out.println(" ");
}

に:

 if(sausagesEaten.isEmpty()) { //if the HashMap is empty
    System.out.println("No sausages have been eaten");
    System.out.println("======================================================="); ; 
}
else{
    for (String key : sausagesEaten) {
          System.out.println(key + ": " + Collections.frequency(saustype, key));
    }
    System.out.println(" ");
}

変数を再宣言することにより、それはローカルスコープであり、自動的に空になります。

編集:適切な反復のための変更を追加しました。

Iterator it = sausagesEaten.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pairs = (Map.Entry)it.next();
    System.out.println(pairs.getKey() + " = " + pairs.getValue());
}
于 2012-12-14T17:55:46.403 に答える
0

を直接反復することはできませんHashMapできることは次のとおりです。

Map<K,V> map = new HashMap<K,V>(); // whatever K and V are

for (K key : map.keySet())
{
    // iterates over all the keys in random order
}

for (V value : map.values())
{
    // iterates over all the values, in random order
}

また、 のような変更可能なオブジェクトをArrayListマップのキーとして使用することは非常に非正統的で危険です。

HashMap<ArrayList, String> sausagesEaten = new HashMap<ArrayList, String>();

マップに配置した後、その内容を何らかの方法で変更すると、マップが破損し、取得できない場合があります。私はあなたが意味したと思います

HashMap<String, ArrayList> sausagesEaten = new HashMap<String, ArrayList>();

sausagesEatenまた、コードでは、句内で再宣言しelse、同じ名前のメンバー変数を非表示にします。

于 2012-12-15T02:03:06.270 に答える