프로그래밍/자바

Enumeration 클래스와 ListIterator 클래스

가카리 2012. 8. 13. 21:47
반응형

ListIterator Iterator를 상속받아서 기능을 추가한 것, 양방향으로 이동이 가능.

 

ArrayList LinkedList와 같이 List 인터페이스를 구현한 컬렉션만 사용가능.

 

Enumeration Iterator의 구버젼격.

 

예제 첫번째

package kch;

 

import java.util.ArrayList;

import java.util.ListIterator;

 

public class ListIteratorEx1 {

               public static void main(String[] args){

                      

                       ArrayList list = new ArrayList();//리스트를 선언하고

                       list.add("1");

                       list.add("2");

                       list.add("3");

                       list.add("4");

                       list.add("5");

              

                       ListIterator it = list.listIterator();//Iterator 받아옴.

                      

                       while(it.hasNext()){//다음이 있다면 출력함

                              System.out.print(it.next());

                       }

                      

                       System.out.println();

                      

                       while(it.hasPrevious()){//이전이 있다면 출력함.

                              System.out.print(it.previous());

                       }

               }

}

 

 

 

 

 

예제 두번째

 

package kch;

 

import java.util.ArrayList;

import java.util.Iterator;

 

public class ListIteratorEx2 {

 

        public static void main(String [] args){

              

               ArrayList original = new ArrayList(10);

               ArrayList copy1 = new ArrayList(10);

               ArrayList copy2 = new ArrayList(10);

              

               //값 추가함

               for(int i=0; i < 10; i++){

              

                       original.add(i + "");

              

               }

              

               //Iterator 가져옴

               Iterator it = original.iterator();

              

               //다음이 있다면 copy1에 추가함.

               while(it.hasNext()){

                       copy1.add(it.next());//복사함

               }

              

               System.out.println("= original에서 copy1로 복사 (copy) =");

               System.out.println("original: " + original);

               System.out.println("copy1 : " + copy1);

               System.out.println();

              

               it = original.iterator();

              

               while(it.hasNext()){

                       copy2.add(it.next());

                       it.remove();//remove사용시 반드시 next 한다음에 해야됨,.

               }

              

               System.out.println("= original에서 copy2로 이동(move) =");

               System.out.println("original:" + original);

               System.out.println("copy2 : " + copy2);

        }

       

}

 

 

 

반응형