문제

저는 초보자이고 실제 효과를 이해할 수 없습니다. Iterable 상호 작용.

도움이 되었습니까?

해결책

Jeremy가 말한 것 외에도 주요 이점은 자체 구문 설탕을 가지고 있다는 것입니다. 강화 된 for-loop. 당신이 가지고 있다면, Iterable<String>, 넌 할 수있어:

for (String str : myIterable) {
    ...
}

멋지고 쉽지 않습니까? 창조의 모든 더러운 작업 Iterator<String>, 그것이 있는지 확인합니다 hasNext(), 그리고 전화 str = getNext() 컴파일러에 의해 무대 뒤에서 처리됩니다.

그리고 대부분의 컬렉션이 구현되므로 Iterable 또는 하나를 반환하는 견해가 있습니다 (예 : Map'에스 keySet() 또는 values()), 이것은 컬렉션 작업을 훨씬 쉽게 만듭니다.

그만큼 Iterable Javadoc 구현하는 전체 클래스 목록을 제공합니다 Iterable.

다른 팁

트리나 나선형 대기열과 같은 복잡한 데이터 세트가 있는 경우(예, 제가 방금 구성했습니다) 상관없어 내부적으로 구조가 어떻게 되어 있는지, 모든 요소를 ​​하나씩 가져와서 반복자를 반환하도록 하려고 합니다.

문제의 복잡한 개체(트리, 대기열 또는 WombleBasket은 Iterable을 구현하며 Iterator 메서드를 사용하여 쿼리할 수 있는 반복자 개체를 반환할 수 있음)

그럼 그냥 그런거냐고 물어보면 되잖아 hasNext(), 그리고 만약 그렇다면, 당신은 next() 나무에서 어디서 구할지 고민할 필요 없이 아이템을 얻을 수 있습니다.

반환합니다 java.util.Iterator. 주로 루프 용으로 향상된 구현 유형을 사용할 수있는 데 사용됩니다.

List<Item> list = ...
for (Item i:list) {
 // use i
}

후드 아래에서 컴파일러가 호출됩니다 list.iterator() 그리고 그것을 반복합니다 i for 루프 내부.

인터페이스는 클래스가 구현 해야하는 방법 목록입니다. 반복 가능한 인터페이스는 매우 간단합니다. 구현할 방법은 하나뿐입니다. Iterator(). 수업이 Iterable 인터페이스, 그것은 당신이 Iterator 객체를 반복하는 데 사용할 객체 (즉, 트래버스) 객체의 데이터를 사용합니다.

반복자는 기본적으로 모든 컬렉션을 통해 반복을 허용합니다.

또한 Java의 각각 통제 명세서를 사용하는 데 필요한 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top