0

ハッシュマップから null 値を受け取りました。これはハッシュマップの作成です:

private HashMap<String,Bitmap> thumbs = new HashMap<String,Bitmap>();

/* adding a single value to the hashmap */

次に、次のように、ハッシュマップから値を取得します。

    public Bitmap getImageByFileName(String fileName) {

    Bitmap fish = null;
    Iterator it = thumbs.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        fish = (Bitmap)thumbs.get(fileName);        
        it.remove(); 
    }   
    Log.i("shnitzel", " bitmap is " + fish);
    fish = (Bitmap)thumbs.get(fileName);
    Log.i("shnitzel", " final bitmap is " + fish);
    return fish;
}

ログファイル:

08-05 22:18:28.170: I/shnitzel(477):  bitmap is android.graphics.Bitmap@40650138
08-05 22:18:28.170: I/shnitzel(477):  final bitmap is null

ご覧のとおり、「while」ループの内側と外側でまったく同じコマンドを使用していますが、何らかの理由でループの内側では機能しますが、外側では機能しません。なぜこれが起こるのですか?

4

2 に答える 2

3

あなたのループで:

it.remove(); 

読んだ後に要素を削除しています。

于 2013-08-05T19:29:44.703 に答える
1

it.remove()HashMap からエントリを削除しています。

ドキュメントによると:

セットはマップに支えられているため、マップへの変更はセットに反映され、その逆も同様です。

于 2013-08-05T19:29:29.470 に答える