데이터 구조를 가지고 끔찍해. 최근에는 개의 나무을 중첩 된 맵으로 나타내는 경향이있는 것으로 보입니다. 나무는 중첩 된지도가 아닙니다. 나무는 나무입니다. 너 확실히 이것을 검토해야한다.
그러나 중첩 된 맵에 대한 반복에 관한 일반적인 질문에 대해서는 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
이 아니라 이 아닌 것으로 간주됩니다.
무엇을 묻고 있습니까? 'foreach'에서 하나 이상의 값을 얻는 방법? – ChiefTwoPencils
내가 말할 수있는 것은 "Entry>>>>'이 질문을 다루는 것이 아니라, –
ASKASK
** 모든 내부지도 **의 키/값을 트래버스해야합니다. –