2011-04-26 3 views
5

나는 List<Map<String,Object>>을 반환하는 메서드가 있습니다.List <Map <String, Object >> 같은 목록을 반복하는 방법

List<Map<String,Object>>과 같은 목록을 반복하는 방법은 무엇입니까?

+1

http://download.oracle.com/javase/tutorial/java/nutsandbolts/for.html –

+0

더 자세히 설명해 주시겠습니까? –

+0

선택의 여지가있는 경우이 클래스와 같이 지나치게 복잡한 중첩 된 컬렉션 데이터 구조를 피하여 새로운 클래스를 만드는 것이 좋습니다. 다른 프로그래머가 List >를 발견하면 코드에 정확하게 들어 있는지 알아 내야합니다. 수업을 통해 명명 및 문서화로 의도를 분명하게 할 수 있습니다. –

답변

1

이 작동합니다 : 당신은 또한 목록 내의 요소에 액세스하는 for 루프 내에서 iterator 또는 get 방법을 사용할 수 있습니다

List<Map<String, Object>> list = ... 

for (Map<String, Object> map : list) 
{ 
    ... 
} 

. 지도의 목록을

+0

당신이 코드의 첫 줄에 목록을 의미한다고 생각합니다 – fvu

+0

사실. 그 점을 지적 해 주셔서 감사합니다 – npinti

6
List<Map<String, Object>> list = getMyMap();  
for (Map<String, Object> map : list) { 
    for (Map.Entry<String, Object> entry : map.entrySet()) { 
     System.out.println(entry.getKey() + " - " + entry.getValue()); 
    } 
} 
  1. 루프
  2. 핸들 맵 항목
+0

몇 가지 오타가 있습니다. 'map'을 두 번 지정하고리스트의 값은'Map '이어야합니다. – WhiteFang34

+0

@ WhiteFang34 : Thx, 편집 됨. – timbooo

17

이 같은 뭔가를 찾고있는 것 같습니다 : 자바 1.8

List<Map<String, Object>> list; // this is what you have already 

for (Map<String, Object> map : list) { 
    for (Map.Entry<String, Object> entry : map.entrySet()) { 
     String key = entry.getKey(); 
     Object value = entry.getValue(); 
    } 
} 
0

(8) 다음과 같이 다시 쓸 수 있습니다 :

list.forEach(item -> 
       item.forEach((k, v) -> System.out.println(k + ": " + (String)v) 
    ); 
1
Map<String, String> map = new HashMap<>(); 
    map.put("First", "1"); 
    map.put("Second", "2"); 
    map.put("third", "3"); 
    map.put("four", "4"); 

    // here is the logic 
    for (Map.Entry<String, String> entry : map.entrySet()) { 
     System.out.println(entry.getKey() + " - " + entry.getValue()); 
    } 
관련 문제