ㅇTL

14. Collections, Maps, Iterators 본문

2-1/객체지향 - java

14. Collections, Maps, Iterators

정노르레기 2022. 6. 19. 20:56

Collection

: 여러 원소들을 담을 수 있는 자료구조

( = 인터페이스 . 각 자료구조들은 Collection인터페이스를 구현한 것이고, 이때 iterator가 사용된다 )

Map의 경우 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다.

 

세 가지 큰 분류 인터페이스

= List / Set / Map

 

1. List<E> 인터페이스

: 순서가 있는 데이터 집합, 중복허용 o

->구현 클래스 : Linked List, Stack, Queue, ArrayList, Vector

• LinkedList<T>

: 저장할 요소를 노드로 만들어 값과 포인터를 저장함. 삽입, 삭제 빠르나 탐색이 느리다. 단일/이중연결리스트 존재

• Vector<T>

: 연결리스트와 같은 동작을 수행, Thread-safe ! 동기화를 지원함. 한번에 한 스레드만 vector호출가능. 그치만 속도는 연결리스트보다 느림

 

2. Set<E> 

: 순서 없는 데이터 집합, 중복 허용 x

-> HashSet, TreeSet

 

3. Map<K, V>

: 키와 값의 한쌍으로 이루어지는 데이터 집합. 순서 x. 키는 중복 허용 x, value는 중복 허용 ㅇ

key는 value를 찾기 위한 이름의 역할 ^^

->HashMap<K,V>, TreeMap, HashTable, Properties

함수들

clear()/ containsKey(Object key), containsValue(Object)/get(Object key)/keySet() -> set으로 키들 set반환/

put(Object key, Object value)/remove(Object key, Object value) (벨류없어도됨)/replace/size()

넣는거 put 빼는거 remove 

replace, 가져오는거 get

키들 반복 돌리기

for(String fruit: fruitData.keySet()){ //ketSet() !!

    ~~

}

 

Collection method

: 각 자료구조 클래스를 구현한 후 다음과 같은 메소드들을 사용할 수 있다

 


Iterator

= java.util에 있는 인터페이스

: 컬렉션에 저장되어있는 요소들을 읽어오는 방법을 표준화 한 것!

이렇게 구성됨!

hasNext()는 다음 요소가 잇는지 t/f반환

next()는 다음꺼 가져옴

remove는 해당 iterator로 불러와지는 마지막 요소를 제거함! - 반드시 next뒤에 사용

** 걍 접근할때만 사용하는거 !! 추가 이런거안되고 뒤로 돌아가는 것도 안됨! !

    다시하고싶으면 iterator을 다시만들어야함 !!

 

-> List, Set이런 프레임워크의 멤버변수로 Iterator 다 구현되어 있는 듯

-> 사용할 대는 

Iterator<데이터타입> name = 컬렉션변수이름.iterator();

이렇게 가져옴!

ex)

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

Iterator<Integer> name = list.iterator();

name.hasNext();

name.next();

name.remove();

 

while(name.hasNext()){

    name.next() 프린트

}

name.remove();

 

 

-> for each문은 Iterator과 동일한 역할!!

while(Integer i:list){

     System.out.println(i);

     last=i;

}

list.remove(last); //remove(Obj) 이 함수가 컬렉션에 존재하므로 !

하면 iterator로 전체프린트 후 마지막 없애는거 똑같이할수잇음!!

 

'2-1 > 객체지향 - java' 카테고리의 다른 글

디자인패턴 2 - Observer & Decorator  (0) 2022.06.18
Design pattern - Singleton  (0) 2022.06.13
14- ArrayList , Generics  (0) 2022.06.13
Interfaces and Inner Classes  (0) 2022.06.02
19- Threads  (0) 2022.05.31