Значения jash hashmap после перефразировки? - PullRequest
1 голос
/ 17 февраля 2010

У меня есть следующий фрагмент кода:

private static HashMap<String, TestObject> labelHash= new HashMap<String, TestObject>();
    private static HashMap<String, TestObject> valueHash= new HashMap<String, TestObject>();

    private HashMap getChildrenInHash(int opt){
//       HashMap labelHash= new HashMap();
//       HashMap valueHash= new HashMap();

        if (valueHash.isEmpty() && labelHash.isEmpty()) {        

                if(getLabel().isShowing()){
                    TestObject[] tempArray = getLabel().getMappableParent().getMappableChildren();
                    for(int i =1; i < tempArray.length-2;i++){
                        if(tempArray[i]==null)
                            break;
                        if(tempArray[i].getProperty("text").toString().compareTo(" ")==0){
                            i+=1;

                        }
                        labelHash.put((String)tempArray[i].getProperty("text"),(tempArray[i]));

                        valueHash.put((String)tempArray[i].getProperty("text"),(tempArray[i+1]));
                        i+=2;
                }
                //System.out.println("finished filling the hashes");                
                }
            }            

        }

        if(opt ==1)
            return labelHash;
        else 
            return valueHash;

    }

Я использую этот метод, чтобы вначале заполнить хеш-карты, а затем, в конечном итоге, получить значения из него позже, но проблема в том, что значения, в которые я попадаю, больше не существуют для извлечения (не все, но некоторые)? так, что происходит ? как они теряются, я проверил с помощью отладчика и видел значения одно за другим при вставке, но когда извлекается, больше не существует никаких мыслей?

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Ты что-нибудь делаешь с этими TestObject с?

HashMap s (и коллекции в целом) хранят ссылку, а не новую копию их содержимого. Это нормально с неизменяемыми классами, такими как String, но с неизменяемыми классами, вы можете изменять содержимое этих объектов через исходную ссылку.

0 голосов
/ 17 февраля 2010

Используете ли вы разные ключи (всегда) при заполнении?Если вы всегда используете один и тот же ключ, вы найдете только последнее введенное значение ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...