ListIterator로 리스트 수정

Java의 입력/출력과 스트림

Alex Liu

Software Development Engineer

Iterator vs ListIterator

Iterator와 ListIterator 비교

Java의 입력/출력과 스트림

샘플 ArrayList

import java.util.ArrayList;
public class SampleData {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
    }
}  
[Alice, Bob, Charlie]
Java의 입력/출력과 스트림

ListIterator로 리스트 순회

// ListIterator 클래스 임포트
import java.util.ListIterator;

// 샘플 리스트 `names`에 대한 ListIterator 생성 ListIterator<String> it = names.listIterator(); // .hasNext()와 `.next()`로 순회하며 한 줄씩 출력 while (it.hasNext()) { System.out.println(it.next()); }
Alice 
Bob 
Charlie
Java의 입력/출력과 스트림

ListIterator로 뒤로 이동

  • .previous()로 뒤로 이동
// 샘플 리스트 `names`에 대한 ListIterator 생성
ListIterator<String> it = names.listIterator(names.size());
// .hasPrevious()로 리스트의 시작에 도달했는지 확인
while (it.hasPrevious()) {
    // .previous()로 역순으로 요소 가져오기
    System.out.println(it.previous());}
  • 역순 출력, 결과:
Charlie
Bob
Alice
Java의 입력/출력과 스트림

순회 중 요소 수정

  • .set() 메서드 사용
// 샘플 리스트 names에 대한 ListIterator 생성
ListIterator<String> it = names.listIterator();

// 리스트를 순회하며 .set()으로 요소 수정 while (it.hasNext()) { String name = it.next(); if ("Bob".equals(name)) it.set("Bobby"); }
  • 업데이트된 names 리스트:
[Alice, Bobby, Charlie]
Java의 입력/출력과 스트림

순회 중 요소 추가

  • .add()로 요소 추가
ListIterator<String> it = names.listIterator();

// 리스트를 순회하며 .add()로 요소 삽입 while (it.hasNext()) { String name = it.next(); if ("Charlie".equals(name)) it.add("David"); }
  • 업데이트된 names 리스트:
    [Alice, Bobby, Charlie, David]
    
Java의 입력/출력과 스트림

요약

  • ListIteratorIterator를 확장
    • 순방향/역방향 모두 지원
    • 순회하며 요소 수정 가능
  • 주요 메서드 요약

    • .next()/.previous(): 앞/뒤로 이동
    • .set(): 현재 요소 수정
    • .add(): 동적 삽입
    • .remove(): 안전한 삭제
    • 리스트(ArrayList, LinkedList 등)에서만 동작
Java의 입력/출력과 스트림

연습해 봅시다!

Java의 입력/출력과 스트림

Preparing Video For Download...