2014-12-08 4 views
1

Как передать значение hashmap в список Запись имеет тип Строковый ключ и значение?Как передать значение HashMap в список

Страница Класс:

public List<Entry> entry; 

public void setEntry(final List<Entry> entry) { 
    this.entry = entry; 
    this.setInfo(entry); 
} 

public void setInfo(final List<Entry> entryList) { 
    this.prop = new HashMap<String, String>(); 
    for (Entry objEntry : this.entry) { 
     this.prop.put(objEntry.getKey(), objEntry.getValue()); 
    } 
} 

Я создал карту:

Map<String, String> info = new HashMap<String, String>(); 
info.put("abc", "123") 

Я попытался это:

List l = new ArrayList(info.values()); 
page.setInfo(list); // I am getting class cast exception 
+2

Вы также будет получать предупреждения о не использование дженерик должным образом, что приводит к точно такому роду исключение. – chrylis

+0

Вот почему не использовать сырые типы ... если бы вы не использовали необработанные типы, это даже не компилировалось бы. – Radiodef

+0

В классе страницы метод setInfo: расширенный для цикла try, заменив this.entry на entryList – techGaurdian

ответ

1

В вашем методе public void setInfo(final List<Entry> entryList), вам нужен тип List<Entry> , в то время как вы передаете тип List<String>.

Если вы новичок в Generic, уточните here для получения дополнительной информации.

Для вашего случая вам нужен тип записи внутри вашего списка. Метод Map # entrySet() может сделать это, он возвращает коллекцию Map.Entry.

Вы можете создать свой список с записью набора, как это:

List<Entry> list = new ArrayList(info.entrySet()); 
+0

Можете ли вы объяснить это – pals

+0

Если вам нужен тип записи внутри вашего списка, вам нужно получить коллекцию записей с вашей карты. Метод entrySet() может это сделать, он возвращает коллекцию Map.Entry. – pals

+0

@pals, просмотрите мой обновленный ответ. – Jaskey

0

В Page методе класса SetInfo, enhanced for loop попытаться заменить this.entry к entryList как:

Страница Класс:

class Page { 

public List<Entry> entry; 

... 

public void setInfo(final List<Entry> entryList) { 
    this.prop = new HashMap<String, String>(); 
    for (Entry objEntry : entryList) { 
     this.prop.put(objEntry.getKey(), objEntry.getValue()); 
    } 
    } 
} 

Создайте свой список с позицией, установленной как: (согласно @Jaskey)

List<Entry> list = new ArrayList(info.entrySet()); 

Надеется, что это помогает