Java의 교체 Iterator와 매거진 Enumeration 자세히 보기
1. 교체기 인터페이스
Iterable
내장 방법iterator(), 새로 만든 Iterator를 되돌려줍니다.
예:
public interface Iterable { Iterator Iterator(); }
Iterator에는 hasNext () 와 next () 두 가지 방법이 있습니다.public interface Iterator {boolean hasNext (), Item next (), void remove (),//선택 사항}2. 실현
가져오기
import java.util.Iterator;
범용 클래스, Iterable 인터페이스 구현 implements IterableIterable의 iterator () 방법을 실현하고 임의의 정의 교체기 형식을 되돌려줍니다.
교체기 유형 정의implements Iterator
hasNext(), next(), remove() 구현
3. 예:
public class Stack<Item> implements Iterable<Item> {
public Iterator<Item> iterator() {
return new ListIterator<Item>(first);
}
private class ListIterator<Item> implements Iterator<Item> {
private Node<Item> current;
public ListIterator(Node<Item> first) {
current = first;
}
public boolean hasNext() { return current != null; }
public void remove() { throw new UnsupportedOperationException(); }
public Item next() {
if (!hasNext()) throw new NoSuchElementException();
Item item = current.item;
current = current.next;
return item;
}
}
}
4. 호출 방법foreach 교체
for (String s : stack) System.out.println(s);
int\double와 같은 기본 형식이라면 이전의 변환 관계를 사용하십시오5. 반복
Iterator i = stack.iterator(); while (i.hasNext()) { String s = i.next(); }
매거진 Enumeration 인터페이스Enumeration은 java입니다.util의 인터페이스 클래스입니다. Enumeration에서 매거 데이터 집합과 관련된 방법을 봉인했습니다. Iterator와 차이가 많지 않습니다. 집합 중의 요소를 두루 훑어보는 데 사용되지만 매거 Enumeration은 Vector와 Hashtable 형식의 집합 요소만 훑어보는 기능을 제공합니다.이 유형의 집합 대상은 elements () 를 호출하여 Enumeration 대상을 가져온 다음, Enumeratino 대상을 호출하여 집합의 요소를 훑어보십시오.
hasMoreElements(): Enumeration 객체에 데이터가 있는지 판단
nextElement(): Enumeration 객체의 다음 데이터 가져오기
인스턴스는 다음과 같습니다.
Enumeration req = request.getParameterNames();
while (req.hasMoreElements()) {
Object obj = (Object) req.nextElement();
if (obj.toString().trim().equals("LastPage")) {
System.out.println("LastPage
");
} else if (obj.toString().trim().equals("NextPage")) {
System.out.println("NextPage");
}
}
Iterator와 Enumeration의 차이점Java 컬렉션에서 우리는 보통 "Iterator (교체기)"또는 "Enumeration (매거류)"을 통해 컬렉션을 반복합니다.오늘 우리는 그들 사이에 도대체 어떤 차이가 있는지 함께 공부합시다.
우리 먼저 Enumeration을 봅시다.java와 Iterator.자바의 원본 코드, 그리고 그것들의 차이점.
Enumeration은 다음과 같은 원본 코드를 가진 인터페이스입니다.
package java.util;
public interface Enumeration<E> {
boolean hasMoreElements();
E nextElement();
}
Iterator도 다음과 같은 원본 코드를 가진 인터페이스입니다.
package java.util;
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
코드를 다 보았으니, 우리 다시 그것들 사이의 차이를 이야기하자.(01) 함수 인터페이스가 다르다
Enumeration에는 2개의 함수 인터페이스만 있습니다.Enumeration 을 통해 컬렉션의 데이터만 읽을 수 있으며 수정할 수 없습니다.
Iterator에는 3개의 함수 인터페이스만 있습니다.Iterator는 집합된 데이터를 읽을 수 있는 것 외에도 삭제 작업을 할 수 있습니다.
(02) Iterator는 fail-fast 메커니즘을 지원하지만 Enumeration은 지원하지 않습니다.
Enumeration은 JDK 1.0에 추가된 인터페이스입니다.그것에 사용된 함수는 Vector, Hashtable 등 종류를 포함하는데, 이 종류들은 모두 JDK 1.0에 추가된 것이다. Enumeration이 존재하는 목적은 그것들을 위해 역행 인터페이스를 제공하는 것이다.Enumeration 자체는 동기화를 지원하지 않으며, Vector, Hashtable에서 Enumeration을 실행할 때 동기화를 추가합니다.
Iterator는 JDK 1.2에 추가된 인터페이스로 HashMap, ArrayList 등 집합을 위한 인터페이스를 제공합니다.Iterator는fail-fast 메커니즘을 지원합니다. 여러 라인이 같은 집합된 내용을 조작할 때fail-fast 이벤트가 발생할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.