본문 바로가기

JAVA

Enumeration,열거형

//Enumeration : 열거형

Enumeration, Iterator, ListIterator : 탐색기(반복자)

- 컬렉션내의 요소를 접근하기 위한 인터페이스(도구)

- Enumeration -> Iterator(*******) -> ListIterator


//Iterator

- 컬렉션 프레임워크에서 저장된 요소를 읽어오는 방법을 표준화하기 위한 역할(인터페이스)

- Colection의 하위 컬렉션들이 소유 -> Iterator 타입의 객체를 반환하는 메소드를 이미 구현(iterator())

- List, Set 계열에 구현(Map은 없음)

- 주로 읽기 전용으로 사용한다.


//Iterator 주요멤버

1. boolean hasNext() ->값이 있는지 없는지 true/false 형태

2. T next() -> 저장된 요소를 가져옴

3. remove()


//탐색

1. 일반 for(i)

2. 향상된 for()

3. Iterator


ex)

ArrayList<String> list = new ArrayList<String>();

list.add("사과");

list.add("바나나");

list.add("파인애플");

list.add("포도");


Iterator<String> iter = list.iterator();


**커서의 위치를 다시 처음으로 되돌려야 하는 상황

-> iterator를 다시 만들기


iter = list.iterator();


**루프돌려 전체 요소 출력

while(iter.hasNext()){

System.out.println(iter.next());

}


------------------------------------------------------------------

//HashMap을 Iterator을 이용하여 요소출력


HashMap<String,String> map = new HashMap<String,String>();


map.put("one","하나");

map.put("two", "둘");

map.put("three", "셋");

map.put("four", "넷");

map.put("five", "다섯");


//HashMap Loop

- Map 계열 : 순서가 없는 집합  =>Loop불가능


//List -Set

Set<String> keys = map.keySet(); //키의 집합


Iterator<String> iter = keys.iterator();


while(iter.hasNext()){

**1번째 방법

System.out.println(iter.next());


**2번째 방법

String key = iter.next();

System.out.printf("map.get(%s) = %s\n", key,map.get(key));

}


Collection<String> values = map.values(); //값의 집합


Iterator<String> iter2 = values.iterator();


while(iter2.hasNext()){

System.out.println(iter2.next());

}


-------------------------------------------------------------------------


//Iterator => ListIterator

- Iterator : 단방향 -> 전진커서

- ListIterator : 양방향 -> 전진 + 후진 커서

- ListIterator을 잘사용 안하는 이유

1. 속도가 느림

2. List계열만 지원(Set계열은 지원 안함)




'JAVA' 카테고리의 다른 글

TreeSet  (0) 2018.08.08
Set  (0) 2018.08.08
Stack예제  (0) 2018.08.08
Queue예제  (0) 2018.08.07
ArrayList와 LinkedList  (0) 2018.08.07