Enumeration 과 Iterator 소개
Enumeration 소개
Enumeration (열거) 은 그 자체 가 인터페이스 이지 클래스 가 아 닙 니 다.Enumeration 인터페이스 자 체 는 데이터 구조 가 아 닙 니 다.그러나 다른 데이터 구조 에 매우 중요 하 다.Enumeration 인 터 페 이 스 는 하나의 데이터 구조 에서 연속 적 인 데 이 터 를 얻 는 수단 을 정의 합 니 다.Enumeration 인 터 페 이 스 를 실현 하 는 대상 은 일련의 요 소 를 생 성하 고 한 번 에 하 나 를 생 성 합 니 다.nextElement 방법 을 연속 으로 호출 하면 일련의 연속 요 소 를 되 돌려 줍 니 다.
예 를 들 어
Vector v
의 모든 요 소 를 출력 하려 면 다음 과 같은 방법 을 사용 할 수 있 습 니 다. for (Enumeration e = v.elements(); e.hasMoreElements();){
System.out.println(e.nextElement());
}
Enumeration 방법 소개
Enumeration 인 터 페 이 스 는 주로 벡터 요소, 해시 표 의 키 와 해시 표 의 값 을 통 해 매 거 진 표준 방법 을 제공 합 니 다.Enumeration 은 하나의 인터페이스 이기 때문에 그의 역할 은 데이터 구조 에 방법 협 의 를 제공 하 는 데 국한 되 고 이 인 터 페 이 스 를 실현 하 는 대상 은 일련의 요소 로 구성 되 며 nextElement () 방법 을 연속 적 으로 호출 하여 Enumeration 매 거 진 대상 중의 요 소 를 얻 을 수 있다.Enumeration 인터페이스 에는 다음 두 가지 방법 만 정의 되 어 있 습 니 다.
이 열 거 는 더 많은 요 소 를 포함 하고 있 는 지 테스트 합 니 다.
반환 값: 이 매개 대상 이 최소한 제공 할 수 있 는 요 소 를 포함 하고 있 을 때 만 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.
열거 코드 예시
import java.util.Enumeration;
import java.util.Vector;
public class EnumerationTest {
public static void main(String[] args) {
Vector vector = new Vector();
vector.addElement("Monday");
vector.addElement("Tuesday");
vector.addElement("Wednesday");
vector.addElement("Thursday");
Enumeration elements = vector.elements();
while (elements.hasMoreElements()) {
System.out.println(elements.nextElement());
}
}
}
출력 결과:
Monday
Tuesday
Wednesday
Thursday
import java.util.Enumeration;
import java.util.Hashtable;
public class EnumerationTest {
public static void main(String[] args) {
Hashtable table = new Hashtable();
table.put(" ", "Monday");
table.put(" ", "Tuesday");
table.put(" ", "Wednesday");
table.put(" ", "Thursday");
Enumeration keys = table.keys();
while (keys.hasMoreElements()) {
String element= keys.nextElement();
System.out.println(element);
}
}
}
출력 결과:
import java.util.Enumeration;
import java.util.Hashtable;
public class EnumerationTest {
public static void main(String[] args) {
Hashtable table = new Hashtable();
table.put(" ", "Monday");
table.put(" ", "Tuesday");
table.put(" ", "Wednesday");
table.put(" ", "Thursday");
Enumeration values= table.elements();
while (values.hasMoreElements()) {
String element= values.nextElement();
System.out.println(element);
}
}
}
출력 결과:
Wednesday
Tuesday
Thursday
Monday
Iterator
Iterator 소개
Iterator (교체 기) 는 자바 Collections Framework (자바 집합 프레임 워 크) 의 Enumeration 을 대체 하 였 으 며, 교체 기 는 매 거 진 것 과 두 가지 차이 가 있 습 니 다.
Iterator 방법 소개:
교체 할 수 있 는 요소 가 있다 면 트 루 로 돌아 갑 니 다.(다시 말 하면 next 가 이상 을 던 지지 않 고 요 소 를 되 돌려 주면 true 로 돌아 갑 니 다).
: , true。
교체 기 가 가리 키 는 collection 에서 교체 기 가 돌아 오 는 마지막 요 소 를 제거 합 니 다 (선택 가능 한 동작).매번 next 를 호출 할 때마다 이 방법 을 한 번 만 호출 할 수 있 습 니 다.교체 할 때 이 방법 이외 의 다른 방식 으로 이 교체 기 가 가리 키 는 collection 을 수정 하면 교체 기의 행 위 는 불확실 하 다.
던 지기:
Iterator 코드 예
Iterator 를 사용 하여 list 단일 열 집합 을 옮 겨 다 니 며, map 다 열 집합 에 대해 서 는 keyset () 방법 이나 entry Set () 방법 을 호출 한 후에 도 단일 열 집합 에 해당 합 니 다.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args) {
List list = new ArrayList();
list.add("Monday");
list.add("Tuesday");
list.add("Wednesday");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
출력 결 과 는:
Monday
Tuesday
Wednesday
Iterator 의 reove () 방법 호출:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args) {
List list = new ArrayList();
list.add("Monday");
list.add("Tuesday");
list.add("Wednesday");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
if ("Wednesday".equals(iterator.next())) {
iterator.remove();
}
System.out.println(list);
}
}
}
출력 결과:
[Monday, Tuesday, Wednesday]
[Monday, Tuesday, Wednesday]
[Monday, Tuesday]
주의: 매번 순환 할 때마다 next () 방법 을 한 번 만 사용 하 는 것 이 좋 습 니 다. 한 번 사용 하면 지침 이 하나 아래로 내 려 갑 니 다. 한 순환 에서 next () 방법 을 두 번 사용 하면 NoSuchElement Exception 의 이상 이 발생 할 수 있 습 니 다. 예 를 들 어:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args) {
List list = new ArrayList();
list.add("Monday");
list.add("Tuesday");
list.add("Wednesday");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
if (iterator.next() != null && !"".equals(iterator.next())) {
//
}
}
}
}
위의 코드 는 한 번 순환 하고 포인터 가 두 자 리 를 뒤로 이동 합 니 다. 이렇게 두 번 째 순환 할 때 두 번 째 iterator. next () 는 이상 하 게 던 집 니 다.
마찬가지 로 reove () 방법 에 주의해 야 합 니 다. 매번 호출 할 때마다 next () 방법 을 호출 한 전제 에서 만 응답 요 소 를 제거 할 수 있 습 니 다.여러 next () 방법 을 호출 한 후 reove () 방법 을 호출 하면 제거 할 때 마지막 으로 next () 방법 으로 돌아 오 는 요 소 를 호출 합 니 다.예 를 들 면:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args) {
List list = new ArrayList();
list.add("Monday");
list.add("Tuesday");
list.add("Wednesday");
list.add("Thursday");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
if (iterator.next() != null && !"".equals(iterator.next())) {
iterator.remove();
}
System.out.println(list);
}
}
}
출력 결과:
[Monday, Wednesday, Thursday]
[Monday, Wednesday]
총결산
Enumeration 인 터 페 이 스 는 JDK 1.0 때 출시 된 것 으로 JDK 1.5 이후 Enumeration 인 터 페 이 스 를 확장 해 범용 애플 리 케 이 션 을 추가 했다.Iterator 교체 기 는 Enumeration 의 기능 을 대체 하 는 동시에 요 소 를 삭제 하 는 방법 을 추가 하고 방법의 이름 을 개선 했다.Enumeration 을 왜 써 요?자바 의 발전 이 오 랜 시간 이 걸 렸 기 때문에 일부 오래된 시스템 이나 라 이브 러 리 의 방법 은 Enumeration 인 터 페 이 스 를 사용 하고 있 기 때문에 호 환 을 위해 서 는 Enumeration 을 사용 해 야 합 니 다.이미 알 고 있 는 vactor 와 hashtable 의 스 트 리밍 은 Enumeration 을 사용 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.