2013-08-05 3 views
0

Я получаю нулевое значение из своего hashmap. Это создание HashMap:Java hashmap возвращает null

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

/* adding a single value to the hashmap */ 

Затем я перехожу к retreiving значение из 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 [email protected] 
08-05 22:18:28.170: I/shnitzel(477): final bitmap is null 

Как вы можете видеть, Я использую ту же самую команду внутри и снаружи цикла while, но по какой-то причине она работает внутри нее, но не снаружи. Почему это происходит?

+6

Вы не удаляете его во время цикла? –

+0

:( Действительно, я просто добавил этот цикл while, чтобы понять, почему я начал получать нулевое значение. Я, честно говоря, понятия не имею, почему он не работал раньше, но теперь. Спасибо в любом случае :) –

+0

Glad чтобы услышать, что проблема решена! Пожалуйста, выберите ответ, чтобы закрыть вопрос. –

ответ

1

it.remove() удаляет запись из HashMap.

Согласно documentation:

Набор поддерживается картой, поэтому изменения в карте отражены в наборе, и наоборот.

3

В вашем цикле:

it.remove(); 

Вы удаления элемента после его прочтения.

Смежные вопросы