ListIterator : Java

yoxxin·2020년 12월 28일
0

코테준비

목록 보기
1/3
import java.io.*;
import java.util.*;
import java.math.*;

public class Main {
    public static void main(String args[]) throws IOException {
        LinkedList<Integer> list = new LinkedList<>();

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        print("원본",list);

        ListIterator it = list.listIterator();
        it.next();

        it.previous();
        it.remove();
        print("제거 후",list);
    }
    public static void print(String state, LinkedList<Integer> list){
      System.out.println(state);
      for(int i : list){
        System.out.print(i+" ");
      }
      System.out.print("\n");
    }
}
> 

BOJ 1406 에디터 문제를 풀다가 시간초과가 났다.
List의 size()메소드를 계속 호출해서 그런 듯 하다.
size()는 O(n)이다.

ListIterator는 커서를 오른쪽으로 옮기는 next()뿐 아니라
왼쪽으로 옮기는 previous()도 있기 때문에 유용하다.
위 예제코드는 빠져있지만 next(),previous()는
hasNext(),hasPrevious() 메소드로 조건검사 후에 적도록 하자.

또한 remove()는

it.previous();
it.remove();

위와같이
it.previous() 또는 it.next() 호출후에 적어주도록 하자.
previous()와 next()가 리턴한 값이 지워진다.

위와같이 동작한다.
https://www.youtube.com/watch?v=quRRkdsY13U

0개의 댓글