0

我从我的哈希图中收到一个空值。这是哈希图的创建:

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 回答