2014-12-08 5 views
1

해시 맵 값을 List에 전달하는 방법 항목의 형식은 String key 및 value입니까?목록에 HashMap 값을 전달하는 방법

페이지 클래스 :

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

나는이 시도 : 나는지도 만든

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()); 
    } 
} 

public void setInfo(final List<Entry> entryList)의 당신의 방법에서

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

을하는 데 도움이됩니다. – chrylis

+0

이것은 원시 타입을 사용하지 않는 이유입니다 ... 만약 당신이 원시 타입을 사용하지 않는다면 컴파일되지 않습니다. – Radiodef

+0

페이지 클래스에서 setInfo 메서드 : for 루프를 개선했습니다. entryList로 this.entry를 바꿉니다. – techGaurdian

답변

1

, 당신은 List<Entry>의 형식이 필요합니다 , 당신은 List<String> 인 타입을 건네줍니다.

일반용을 처음 사용하는 경우 자세한 내용은 here을 확인하십시오.

그래서, 귀하의 경우 목록에 항목 유형이 필요합니다. 메소드 맵 # entrySet()이이를 수행 할 수 있으며, Map.Entry의 콜렉션을 리턴합니다.

당신은 다음과 같이 설정 항목으로 목록을 만들 수 있습니다

:

페이지 클래스 setInfo 방법에
List<Entry> list = new ArrayList(info.entrySet()); 
+0

설명 할 수 있습니까? – pals

+0

목록에 항목 유형이 필요한 경우 map.Method entrySet()에서 항목 컬렉션을 가져와야합니다. 이 작업을 수행 할 수 있으면 Map.Entry 컬렉션을 반환합니다. – pals

+0

@pals, 업데이트 된 답변을 검토하십시오. – Jaskey

0

, 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()); 

희망이 당신도 예외 정확히 종류에 이르게 제대로 제네릭을 사용하지에 대해 경고를 받고있어