2016-05-06 2 views
0

Я пытаюсь решить это, но я застрял здесь некоторое время. Моя проблема заключается в том, что я не могу найти способ поместить объект массива в свой хэш-файл.Как поместить объект массива в hashmap?

Вот мой пример кода hashmap для раскрывающегося меню, которое я получил от google.

private Map<String,Map<String,String>> data2 = new HashMap<String,Map<String,String>>(); 
private String country; 
private String city; 
private Map<String, String> countries; 
private Map<String,String> cities; 

countries = new HashMap<String, String>(); 
     countries.put("USA", "USA"); 
     countries.put("Germany", "Germany"); 
     countries.put("Brazil", "Brazil"); 

     Map<String,String> map = new HashMap<String, String>(); 
     map.put("New York", "New York"); 
     map.put("San Francisco", "San Francisco"); 
     map.put("Denver", "Denver"); 
     data2.put("USA", map); 

     map = new HashMap<String, String>(); 
     map.put("Berlin", "Berlin"); 
     map.put("Munich", "Munich"); 
     map.put("Frankfurt", "Frankfurt"); 
     data2.put("Germany", map); 

Теперь .. Моя проблема заключается в том, как помещать объекты в хэш-карту.

Вот мой код в извлечении объекта массива.

 while(rs.next()){ 
        PropertyData reader = new PropertyData(); 
        id = rs.getInt("id"); 
        prop_name = rs.getString("prop_name"); 
        prop_value = rs.getString("prop_value"); 
        engine_name = rs.getString("engine_name"); 
        //other setter.. 


        reader.setId(id); 
        reader.setPropName(prop_name); 
        reader.setPropValue(prop_value); 
        reader.setEngineName(engine_name); 
        //other setter.. 

        prop.add(reader); 
       } 

От вышеуказанного кода. Я хочу поставить id на ключ hashmap и пропущен на имя строки hashmap. После этого я хочу отобразить другие значения, ссылающиеся на id.

И здесь мой объект был добавлен.

static List<PropertyData> prop = new ArrayList<PropertyData>(); 

Я попытался инициализировать его на моем хэш-карте, но он вернул null.

+0

Невозможно узнать, что вы хотели бы сделать, задать более правильный вопрос, опубликовать какой-либо полный код (готовый к запуску) и продемонстрировать вашу проблему. –

+0

Достаточно просто указать *, что * вы хотите поставить, и * где * вы хотите его поместить. 2 строки кода. – Idos

+0

okay wait плохо отредактируйте его –

ответ

0
new HashMap<String, String>() 

говорит, что ключ будет иметь тип String и значение будет иметь тип String. Если вы хотите иметь PropertyData в значении затем определяют его как

new HashMap<String, PropertyData>() 
0

Если вы можете создать HashMap с ниже нотации, вы можете добавить список к вашей карте ..

HashMap<String, List<PropertyData>> map = new HashMap<>(); 
0

Ok, у вас есть данные в этом списке:

List<PropertyData> prop = new ArrayList<PropertyData>(); 

Теперь создать карту, как это (если PropertyData имеет уникальный id - также установить размер, как размер массива, изменение размера будет сделано о олько один раз):

HashMap<Integer, PropertyData> map = new HashMap<>(prop.size()); 

И это, как вы поместите его на карте:

for (PropertyData pd : prop) map.put(pd.getId(), pd); 

Если id в PropertyData не является уникальным, создать int hashCode() функцию, которая будет создавать уникальный int (на основе значений в все переменные - IDE может создать это для вас).

+0

Я пробовал это, но IDE предлагает добавить бросок на карту, после чего стало так. ** ((Список ) map) .add (pd.getId(), pd); ** Затем я получил ошибку java.util.HashMap не может быть отброшен в java.util.List –

+1

извините, моя неудачная ошибка функция должна быть map.put not map.add .. я обновлю свой ответ ... –

+1

спасибо помощнику. Это сработало! –

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