Iterable 인터페이스는 무엇을 위해 사용됩니까?
문제
저는 초보자이고 실제 효과를 이해할 수 없습니다. 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의 각각 통제 명세서를 사용하는 데 필요한 것입니다.