본문 바로가기
Develop/Bit Camp & 자바의 정석

11. 컬렉션 프레임 워크

by jaekk 2018. 5. 6.

1. 컬렉션 프레임 워크

컬렉션(다수의 객체)를 다루기 위한 프로그래밍 방식


2. 핵심 인터페이스

List: 순서O, 중복O ex) 대기자 명단

Set:  순서X, 중복X ex) 집합

Map:  순서X, 중복(키:X 값:O) ex) id/pwd

  키와 값의 쌍으로 이루어진 집합


3. List

List - Vector - Stack

- ArrayList

- LinkedList


4. Set

Set - HashSet

- SortedSet - TreeSet


5. Map

Map - HashTable

- HashMap - LinkedHashMap

- SortedMap - TreeMap


6. Vector와 ArrayList

ArrayList는 Vector를 개선

Object 배열 사용


ArrayList 삭제

마지막 객체부터 삭제


ArrayList의 장/단점

장점: 데이터 읽기 속도 빠름

단점: 1) 크기 변경 x

  2) 추가/삭제 시간


7. LinkedList

배열의 단점 보완

구성 요소: Node(주소+데이터)


LinkedList의 종류

이중 연결 리스트 - 단방향

더블리 링크드 리스트 - 양방향

더블리 써큘러 리스트 - 양방향 써클


8. ArrayList vs LinkedList 성능 비교

1) 순차적 추가/삭제: ArrayList

2) 비순차적 추가/삭제: LinkedList

3) 접근 시간: ArrayList


9. 스택과 큐

스택: LIFO - 수식 계산, redo/undo

큐: FIFO - 인쇄 작업 대기 목록, 버퍼


10. 큐의 변형

1) 덱 : Stack + Queue, 양끝에서 저장/삭제 가능

2) 우선순위 큐: 우선순위가 높은 것부터 꺼냄(null 저장 불가)

3) 블랑킹 큐: 비어있을 때 꺼내기, 가득 차있을 때 넣기 - 지연 (멀티쓰레드)


11. Iterator

컬렉션에 저장된 데이터에 접근

Iterator() 호출


12. Arrays

배열을 다루기 편리한 메서드(Static) 제공


13. Comparator와 Comparable

Comparator: 기본 정렬 기준

Comparable: 기본 정렬 기준 외


compare(), compareTo()

두 객체의 비교결과 반환 - 같으면 0, 오른쪽이 크면 -, 작으면 +


14. HashSet

1) Set인터페이스를 구현한 대표적인 클래스

2) 순서를 유지하려면 LinkedHashSet 클래스 사용

3) 같은 객체가 있으면 저장하지 않음

4) equals()와 hashCode()를 호출하여 중복 객체 체크

5) equals()와 hashCode() 오버라이딩 필수

6)hashCode() 오버라이딩 조건

1) 동일 객체에 대해 hashCode()값은 항상 동일한 값을 반환한다.

2) equals()로 true를 얻은 두 객체의 hashCode()값은 일치해야한다.

3) eqauls()로 값이 false여도 두 객체의 hashCode()값이 같을 수 있다.

(성능 향상을 위해 가능하면 다른 값)


15. TreeSet

1) 범위 검색과 정렬에 유리

2) 요소가 나무 형태로 연결

3) 전위, 중위, 후위법이 있음

4)이진 검색 트리

부모 기준 -작은값 왼쪽, 큰 값 오른쪽

5)HashSet보다 데이터 추가/삭제 시간 ↑


16. HashMap과 TreeMap

HashMap

1) Map 인터페이스를 구현한 대표 컬렉션 클래스

2) 해싱 기법으로 저장, 데이터가 많아도 검색이 빠름

2) 순서 유지하려면 LinkedHashMap

TreeMap: HashMap보다 데이터 추가/삭제 시간 ↑


17. 해싱

1) 해시 함수로 해시테이블에 데이터를 저장, 검색

2) 해시 테이블 = 배열 + 링크드 리스트


해시테이블에 저장된 데이터를 가져오는 과정

1) 키로 해시함수를 호출, 해시 코드 얻음

2) 해시코드에 대응하는 배열 값 찾음

3) 링크드 리스트에서 키와 일치하는 데이터 찾음

(서로 다른 키일지라도 같은 값의 해시코드 반환할 수 있음)


18. TreeMap

1) 이진 검색 트리 구조

2) 키와 값의 쌍

3) 데이터를 정렬해서 저장하기 때문에 저장 시간↑

4) 다수의 데이터에서의 검색 시간: TreeMap < HaspMap

5) 주로 hashMap 사용, 정렬이나 범위 검색이 필요한 경우에 TreeMap 사용


19. Properties

1) 내부적으로 Hashtbale 사용

2) Key & Value -> (String, String) 으로 저장

3) 어플리케이션의 환경설정에 관련된 속성 저장


20. Collections

컬렉션을 위한 메서드 제공


21. 요약

ArrayList

1) 배열

2) 데이터 추가/삭제 불리

3) 순차적 추가/삭제 빠름

4) 접근성 ↑

LinkedList

1) 연결 기반 

2) 데이터 추가/삭제 유리

3) 접근성 ↓


HashMap

1) 배열 + 연결

2) 추가/삭제/검색/접근성 유리

3) 검색 속도 최고


TreeMap

1) 연결 기반

2) 정렬과 범위 검색에 적합

3) 검색 성능은 HaspMap보다 떨어짐


Stack

1) Vector 상속받아 구현

2) LIFO


Queue

1) FIFO


Properties

1) Hashtable 상속받아 구현(String, String)


HashSet

1) HashMap 구현


TreeSet

1) TreeMap 구현


LinkedHashMap & LinkedHashSet

1) HashMap과 HashSet에 저장 순서 유지 기능 추가



'Develop > Bit Camp & 자바의 정석' 카테고리의 다른 글

11. 컬렉션 프레임워크  (0) 2018.05.20
12-2. 애너테이션  (0) 2018.05.09
오라클설치  (0) 2018.05.08
12-1. 지네릭스  (0) 2018.05.08
비트시험_3차  (0) 2018.05.02

댓글