2014-11-07 4 views
0

질문이 있습니다. 목록 내부와 목록 내부에 반복되는 간단한 솔루션이 있습니까? 내 요점은 (XML unmarshall에 기반한) 서로의 목록이 거의 없기 때문에 구조가 얼마나 깊은 지 때때로 알 수 없습니다.목록 내부 목록 반복 목록 Java

exsample에 :

class Car{ 
private List<Door> 
} 

class Door{ 
private List<Parts> 
} 
class Parts{ 
private List<Some1> 
} 
} 
class Some1{ 
private List<Some2> 
} 

그래서 거기 목록 또는 "좋은 방법"에 비어있는 경우 모르고 Some2에 자동차에서 반복 할 수있는 방법? 내 말은 5 번 중첩 된 "for"루프가 다른 6 "if"와 겹쳐져 있지 않다는 뜻입니다.

+4

각 클래스에서 해당 목록을 반복하는 메서드를 만듭니다. 그것은 물건을 분리 된 채로 유지하고, 오류를보다 쉽게 ​​처리 할 수있게하며, 전반적으로 더 깨끗합니다. – DeeV

+0

DeeV는 좋은 아이디어입니다. 결국, 당신은 궁극적으로 네추럴 루프를 어쨌든 수행하고 있지만 적어도 그 타입의 메소드는 정리를 도와 줄 수 있습니다. –

+0

당신은 재귀가 필요하고 당신은 그것을 좋아하지 않을 것입니다. – Gumbo

답변

0

중첩 된 for 루프보다 쉬운 방법은 없습니다. 더 많은 속도를 원하면지도와 같은 다른 구조를 사용해보십시오.

1

DeeV는 각 클래스에 대한 좋은 제안을 각 목록에서 반복합니다.

Car 클래스를 사용하는 클라이언트는 포함하고있는 Some2s를 모두 가져올 수 있습니다. 이렇게하면 :

car.getDoors().getParts().get... 

자동차 클래스의 내부가 노출됩니다. 자동차 변화의 내부가 (아마 다른 컬렉션 타입을 사용하는) 경우

public List<Some2> getSome2s() 

이 방법은, 클라이언트 코드는만큼 휴식하지 않습니다 훨씬 청소기 솔루션은 자동차 클래스에 다음과 같은 방법을 가지고하는 것입니다 Some2s의 목록은 여전히 ​​반환됩니다.

0

먼저 클래스에서 복합 패턴을 구현 한 다음 재귀 적으로 반복하여 목록에 리핑하고 집계 할 수 있습니다.