[자바 학습 노트] Iterator 와 Iterable 인터페이스
3450 단어 자바
1. 인터페이스 정의
1.1 Iterable
Iterable 은 자바. lang 에 포함 되 어 있 으 며, 사용 시 import 가 필요 하지 않 습 니 다. 그 정 의 는 다음 과 같 습 니 다.
public interface Iterable- {
Iterator
- iterator();
}
Iterable 인 터 페 이 스 는 iterator 방법 (대소 문자 주의, Iterator 인터페이스 와 다 름) 을 제공 합 니 다. 이 방법 은 Iterator 인 터 페 이 스 를 되 돌려 줍 니 다.여기 서 설명 해 야 할 것 은 방법 은 인 터 페 이 스 를 되 돌 릴 수 있 지만 실제 이 방법 을 호출 할 때 이 인 터 페 이 스 를 실현 하 는 특정한 인 스 턴 스 (뒤에 예 를 들 어 설명 할 수 있 습 니 다) 입 니 다.
1.2 Iterator
Iterable 이 Iterator 인터페이스 로 돌아 온 이상 Iterator 의 정 의 를 살 펴 보 자.Iterable 과 달리 Iterator 는 java. util. Iterator 클래스 에 포함 되 어 있 기 때문에 사용 할 때 먼저 import 를 해 야 합 니 다.
public interface Iterator- {
boolean hasnext(); #
Item next(); #
void remove(); # ,
}
Iterator 는 Iterable 보다 훨씬 정상 적 이 고 세 가지 방법 을 잘 이해 합 니 다.
2. 인터페이스 구현
다음은 stack 을 예 로 들 어 새로운 collection 에서 이 두 인 터 페 이 스 를 어떻게 실현 하 는 지 설명 한다.
import java.util.Iterator;
public class ArrayStack- implements Iterable
- {
private Item[] a = (Item[]) new Object[100];
private int N = 0;
public void push(Item item){}
public Item pop(){}
public Iterator
- iterator(){
return new ArrayIterator();
}
private class ArrayIterator implements Iterator
- {
private int i = 0;
public boolean hasNext() {return i < N;}
public Item next() {return a[i++];}
public void remove() {}
}
}
주의해 야 할 것 은 stack 이 Iterable 인 터 페 이 스 를 실현 하고 Iterable 의 iterator 방법 (대소 문자 구분 에 주의 하 는 것) 을 통 해 Array Iterator 류 의 대상 을 되 돌려 주 는 것 입 니 다. Array Iterator 는 바로 Iterator 방법 을 실현 하 는 유형 입 니 다. 이것 이 바로 앞에서 말 한 방법 으로 인 터 페 이 스 를 되 돌려 주 는 것 입 니 다. 사실은 이 인 터 페 이 스 를 실현 하 는 인 스 턴 스 를 되 돌려 주 는 것 입 니 다.왜 Iterable 인 터 페 이 스 를 먼저 실현 하고 Iterator 인 터 페 이 스 를 직접 실현 하지 않 느 냐 는 질문 이 있 을 수 있 습 니 다. 이렇게 내부 클래스 를 하나 더 쓰 는 것 은 번 거 롭 지 않 습 니까? 사실 이해 하기 도 쉬 워 요. 인터넷 에서 설명 을 보면 잘 해 요.
Iterator 인터페이스의 핵심 방법 인 next () 나 hasNext () 는 교체 기의 현재 교체 위치 에 의존 하기 때문이다. Collection 이 Iterator 인 터 페 이 스 를 직접 실현 하면 집합 대상 에 현재 교체 위치 가 포 함 된 데이터 (포인터) 를 가 져 올 수 밖 에 없다. 집합 이 서로 다른 방법 간 에 전 달 될 때 현재 교체 위 치 를 미리 설정 할 수 없 기 때문에 next () 방법의 결 과 는 예측 할 수 없 는 것 이 됩 니 다. Iterator 인터페이스 에 reset () 방법 을 추가 하지 않 으 면 현재 교체 위 치 를 초기 화 할 수 있 습 니 다. 그럼 에 도 불구 하고 Collection 은 현재 교체 위치 만 동시에 존재 할 수 있다. Iterable 은 그렇지 않 으 면 호출 할 때마다 처음부터 계산 하 는 교체 기 를 되 돌려 줍 니 다. 여러 개의 교체 기 는 서로 간섭 하지 않 는 다.
출처: 클릭 하여 링크 열기
3. 인터페이스 방법 호출
Iterator 호출 의 예 는 인터넷 에서 너무 많 습 니 다. 글 개념의 완전 성 을 위해 가장 간단 한 두 가지 호출 만 보 여 줍 니 다.
4. 567913. 위 는 표준 적 인 Iterator 를 호출 하여 출력 을 옮 겨 다 니 는 예 입 니 다. 두 번 째 줄 코드 는 오 해 를 가 져 올 수 있 습 니 다. 인터페이스 가 정례 화 된 것 처럼 보이 지만 사실은 그렇지 않 습 니 다.우 리 는 인터페이스 가 실례 화 되 어 서 는 안 된다 는 것 을 알 고 있다. 위의 방법 으로 인 터 페 이 스 를 되 돌려 주 는 것 과 유사 하 다. 이곳 의 '인터페이스 실례 화' 는 사실은 이 인 터 페 이 스 를 실현 한 대상 이다. 다시 말 하면 두 번 째 줄 은
ArrayStack as = new ArrayStack();
Iterator i = as.iterator();
while(i.hasNext()){
String s = i.next();
StdOut.println(s);
}
Iterator i = new ArrayIterator();
p. s. 네, python 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.