저장된 인스턴스의 순차적 접근 방법 1 : for - each문의 사용
List<String> list = new LinkedList<>();
list.add("Toy");
list.add("Box");
list.add("Robot");
for(String s : list)
System.out.print(s +"\t");
System.out.println();
list.remove(0);
for(String s : list)
System.out.print(s +"\t");

저장된 인스턴스의 순차적 접근 방법 2 : 반복자 Iterator 활용
public interface Collection<E> extends Iterable<E>
Collection<E>는 인터페이스 Iterable<E>를 상속하고 있다.
따라서 Collection<E>를 상속하는 클래스는 Iterable<E>를 추상 메소드를 모두 구현한다.
Iterable<E>의 인터페이스에는 Iterator<T> iterator()의 추상 메소드가 존재.
Interable<T>의 내부
public interface Iterable<T> {
Iterator<T> iterator();
}
Iterator<E>의 메소드
E next() 다음 인스턴스의 참조 값을 반환
boolean hasNext() next 메소드 호출시 참조값 반환 가능 여부 확인.
void remove() next 메소드 호출을 통해 반환했던 인스턴스 삭제.
이러한 반복자는 생성과 동시에 첫 번째 인스턴스를 가리키고 next가 호출될 때마다 가리키는 대상이 다음 인스턴스로 옮겨진다. 그렇다면 반복자를 원하는 때에 다시 첫번째 인스턴스를 가리키게 하려면 반복자를 다시 얻어줘야 한다.
Iterator<String> itr = list.iterator();
예제.
List<String> list = new LinkedList<>();
list.add("Toy");
list.add("Box");
list.add("Robot");
list.add("Box");
Iterator<String> itr = list.iterator();
while(itr.hasNext()){
System.out.println(itr.next()+'\t');
}
itr = list.iterator();
String str;
while(itr.hasNext()){
str = itr.next();
if(str.equals("box"))
itr.remove();
}
itr = list.iterator();
while(itr.hasNext()){
System.out.println(itr.next()+'\t');
}
결과
Toy Box Robot Box
Toy Robot