이터레이터 소개

Java의 입력/출력과 스트림

Alex Liu

Software Development Engineer

컬렉션 다루기

  • 이후 영상에서 사용할 HashSet 예시
import java.util.HashSet;

public class SampleHashSetData { public static void main(String[] args) { HashSet<String> fruits = new HashSet<>();
fruits.add("Apple"); fruits.add("Banana");
} }
{Apple, Banana}
Java의 입력/출력과 스트림

For-Each 루프 사용

  • For-Each loop
    • 형식: for (type x: collection){}
    • 각 요소를 자동 처리
    • 여러 컬렉션에서 동작: List, Set, Map
  • 예시: 샘플 집합 fruits: [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Java의 입력/출력과 스트림

Iterator로 컬렉션 순회

  • Iterator<> 사용: List, Set, Queue 등 지원
  • Iterator 클래스 임포트
import java.util.Iterator;

// 샘플 집합 `fruits`용 `Iterator` 객체 `it` 생성 Iterator<String> it = fruits.iterator(); // `.hasNext()`로 다음 요소 존재 여부 확인 while (it.hasNext()) { // `.next()`로 요소 가져오기 System.out.print(it.next());}
Apple Banana
Java의 입력/출력과 스트림

Iterator로 요소 삭제

  • Iterator.remove()를 사용해 요소 삭제

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // 요소가 `A`로 시작하면 삭제
        it.remove();
        }
}
// 이제 fruits에는 "Banana"만 포함
Java의 입력/출력과 스트림

Iterator로 요소 삭제(계속)

  • 삭제 전:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • 삭제 후:

    System.out.println(fruits);
    
    [Banana]
    
  • 안전한 삭제 보장, ConcurrentModificationException 방지

안전한 삭제 아이콘

Java의 입력/출력과 스트림

요약

  • For-Each 루프
    • 지원
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • 미지원
      • Map
      • 요소 삭제
  • Iterator
    • 지원
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (keySet().iterator, values().iterator, entrySet().iterator 사용)
      • 요소 삭제
Java의 입력/출력과 스트림

실습해 봅시다!

Java의 입력/출력과 스트림

Preparing Video For Download...