2014-10-09 3 views
0

각 요소 및 인쇄 반복하는 나를 인도 해주십시오자바 반복 처리

 for (Entry<String, Map<String, Map<String, Map<String, List<TicketDetailsDTO>>>>> zones : zoneOrderedTicketList.entrySet()) { 
      for (String string : zones.getValue()) { 

      } 
     } 

TicketDetailsDTO 객체는

+0

무엇을 묻고 있습니까? 'foreach'에서 하나 이상의 값을 얻는 방법? – ChiefTwoPencils

+2

내가 말할 수있는 것은 "Entry >>>>'이 질문을 다루는 것이 아니라, – ASKASK

+0

** 모든 내부지도 **의 키/값을 트래버스해야합니다. –

답변

1

이 시도 필드와 이름과 ID,

for (Entry<String, Map<String, Map<String, Map<String, List<TicketDetailsDTO>>>>> zones : zoneOrderedTicketList.entrySet()) { 
     for(Entry<String, Map<String, Map<String, List<TicketDetailsDTO>>>> map2 : zones.getValue().entrySet()){ 
      for(Entry<String, Map<String, List<TicketDetailsDTO>>> map3 : map2.getValue().entrySet()){ 
       for(Entry<String, List<TicketDetailsDTO>> map4: map3.getValue().entrySet()){ 
        for(TicketDetailsDTO ticketDetailsDTO : map4.getValue()){ 
         // Play with your code here 
        } 
       } 
      } 
     } 
    } 
0

데이터 구조를 가지고 끔찍해. 최근에는 개의 나무을 중첩 된 맵으로 나타내는 경향이있는 것으로 보입니다. 나무는 중첩 된지도가 아닙니다. 나무는 나무입니다. 너 확실히 이것을 검토해야한다.

그러나 중첩 된 맵에 대한 반복에 관한 일반적인 질문에 대해서는 Java 8의 Stream#flatMap 메서드를 사용하면 중첩 구조를 병합 할 수 있습니다. 설명 된 목표를 달성하기위한 기본 관용적의 스케치 (!은 "엄마"를 참고) 접근 방식은 대략 다음과 같을 수있다 :.

Map<String, Map<String, Map<String, Map<String, List<TicketDetailsDTO>>>>> zoneOrderedTicketList = 
    new LinkedHashMap<String, Map<String, Map<String, Map<String, List<TicketDetailsDTO>>>>>(); 

Stream<Entry<String, List<TicketDetailsDTO>>> stream = 
    zoneOrderedTicketList.entrySet().stream().flatMap(
     (e0) -> e0.getValue().entrySet().stream().flatMap(
      (e1) -> e1.getValue().entrySet().stream().flatMap(
       (e2) -> e2.getValue().entrySet().stream()))); 
stream.forEach((e3) -> { 
    List<TicketDetailsDTO> list = e3.getValue(); 
    System.out.println(list); 
}); 

(심지어 stream 변수에 스트림을 저장할 필요는 없습니다하지만, 결과 스트림에서 forEach을 직접 호출하면 Eclipse 유형 추론이 발생하여 포함 된 객체가 Entry이 아니라 이 아닌 것으로 간주됩니다.