JAVA Collection 에 저장된 데이터에 접근하는 방법
Enumeration
Java 1.2 부터 소개된 초기 Collection을 지원
Snapshot 방식
- Enumeration을 사용시 데이터에 직접 접근하는것이 아닌 접근하려는 Collection을 복사하여 사용
- 다른 사용자가 Collection의 원본데이터를 수정 할 시에 해당 내용을 인지 할 수 없음
Vector 등 초기 객체만 지원
public class Main {
public static void main(String args[])
{
Vector<Integer> v = new Vector();
v.add(1);
v.add(2);
Enumeration e = v.elements();
while(e.hasMoreElements())
{
System.out.println(e.nextElement());
}
}
}
Iterator
모든 Collection 객체에 사용 가능
직접 데이터에 접근하여 데이터를 읽어옴
원본 Collection 데이터를 삭제가능 ( 가장 안전한 Collection 객체 순회중 삭제 방식 )
다른 사용자가 Iterator를 실행 중인 객체에 접근시 Fail-fast, ConcurrentModyfication Exception을 발생 시킴
일반적인 상황에서 Iterator를 사용한다.
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
public class Main {
public static void main(String args[])
{
ArrayList<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
Iterator<Integer> iter = arr.iterator();
while(iter.hasNext())
{
if(iter.next().equals(1)) iter.remove(); // 데이터 삭제
}
Iterator<Integer> iter2 = arr.iterator();
while(iter2.hasNext())
{
System.out.println(iter2.next());
}
}
}
'Programing Language > JAVA' 카테고리의 다른 글
Collection과 람다식을 활용한 데이터 처리 정리 - 1 (0) | 2022.05.12 |
---|---|
JAVA Thread 구현하기 (0) | 2021.02.25 |
JAVA Exception 처리 (0) | 2021.02.23 |
인터페이스와 디폴트, 스태틱 메서드 (0) | 2021.02.22 |
Abstract Class와 Interface의 차이 (0) | 2021.02.22 |