컬렉션: 데이터 그룹
프레임웍: 표준화된 프로그래밍 방식
1. 컬렉션 프레임웍의 핵심 인터페이스
|
특징1 |
특징2 | 구현 클래스 |
예 |
List |
목록 |
순서 O, 중복 O | ArrayList, LinkedList, Stack, Vector |
대기자 명단 |
Set |
집합 |
순서 X, 중복 X | HashSet, TreeSet |
양의 정수집합, 소수집합 |
Map |
쌍 |
순서 X, 중복: 키-X 값-O | HashMap, TreeMap, Hashtable, Properies |
|
1) 사용할 클래스 이름 -> 이름으로 판단
2) Vector, HashTable보단 ArrayList, HashMap 사용
1) List 인터페이스
특징 |
1) 순서 O, 중복 O |
2) 상속 계층도 |
1. ArrayList
1) Vector개선
2) Object 배열 이용 -> 데이터 순차적 저장
3) capacity: 용량, size: 데이터 개수
4) 장점: 읽기 & 쓰기
단점: 크기 변경, 데이터 추가&삭제 시간 ↑
5) 마지막 저장 요소부터 삭제
2. LinkedList
특징 | 설명 |
1) 단방향 불연속적 연결 | |
2) 구성 요소 | Node class Node{ Node next; Object obj; } |
3) 더블 링크드 리스트(볼륨) | class Node{ Node next; Node previous; Object obj; } |
4) 더블 써큘러 링크드 리스트(채널) | 더블 링크드 리스트 + 첫번째, 마지막 요소 연결 |
3) ArrayList & LinkedList 비교
| 순차 추가/삭제 | 중간 추가/삭제 | 접근성 |
ArrayList | ↑ | ↓ | 좋음 |
LinkedList | ↓ | ↑ | 느림 |
4) Stack과 Queue
| 입출력 형태 | 입출력 메서드 | 자료구조 | 구현클래스 | 예 |
Stack | LIFO | push/pop | ArrayList | stack클래스 | 수식계산/ 수식괄호검사/ undo,redo |
Queue | FIFO | offer/poll | LinkedList | queue인터페이스 | 최근사용문서/ 인쇄작업 대기 목록/ 버퍼 |
Queue 종류 |
특징 |
1) Queue |
queue 특징 |
2) PriorityQueue |
1. Queue인터페이스 구현체 2. 우선순위 높은 것 poll 3. null 저장x 4. Array 5. Heap 자료구조로 저장 |
3) Deque(Double-Ended Queue) |
1. Queue의 변형 -양쪽 추가/삭제 가능 offerFirst/pollFirst, offerLast, pollLast |
2) Set 인터페이스
특징 |
1) 순서 X, 중복 X |
2) 상속 계층도 |
3) Map 인터페이스
특징 |
1) 키-값의 쌍 |
2) 키 중복 X, 값 중복 O |
3) 상속 계층도 Map - Hashtable - HashMap - LinkedHashMap - SortedMap - TreeMap |
4) Iterator, ListIterator, Enumeration
특징 |
1) 컬렉션 요소 접근 인터페이스 |
2) public interface Iterator{ boolean hasNext(); Object next(); void remove(); //next()를 호출한 다음 remove() 호출 } public interface Collection { //Collection을 상속받는 List, Set 구현체에는 iterator 구현체가 필수적으로 있다. ... public Iterator iterator(); //iterator를 구현한 객체를 반환 } |
3) 참조변수 타입을 조상 타입으로 하는 것이 좋다. 컬렉션 변경시 코드 변경 최소화 |
4) Map 구현 클래스 keySet(), entrySet() 호출 후 iterator() // set형태로 변환 후 iterator 적용 Map map = new HashMap() ... Iterator it = map.keySet().iterator(); |
5) Arrays
특징 |
메서드 |
1) 배열을 다루는데 유용한 메서드 정의 |
|
2) 배열의 복사 |
copyOf(), copyOfRange() |
3) 배열 채우기 |
fill(), setAll() |
4) 정렬 & 검색 |
sort(), binarySearch() |
5) 문자열 비교 & 출력 |
equals(), toString() |
6) 배열을 list로 반환 |
6) Comparator와 Comparable
인터페이스 | 특징 | |
Comparable |
1. java.lang 패키지 2. 기본 정렬 3. compareTo | public interface Comparable{ public int compareTo(Object o) } |
Comparator |
1. java.util 패키지 2. 다른 기준 3. compare | public interface Comparator{ int compare(Object o1, Object o2); boolean equals(Object obj); } |
7) HashSet
특징 |
1) set 인터페이스 대표 컬렉션 |
2) 순서x: 자체적 저장 방식 사용 저장 순서 유지-> LinkedHashSet |
3) 중복x -> 요소 비교 시간 소요 |
4) 내부적으로 HashMap 이용 |
5) add메서드: 중복 체크->추가하려는 요소의 equals()와 hashCode() 이용-> 오버라이딩 필요 |
6) hashCode() 오버라이딩 1) 한 객체 -> 동일한 hashCode값 2) equals() 반환값 true -> hashCode() 값 동일 3) equals() 반환값 false -> hashCode() 값 같아도 되지만 성능향상 이유로 다른 값 반환이 좋음 4) eqalus()오버라이딩 -> hashCode() 오버라이딩 원칙 |
※ 남궁성 강사님 수업과 '자바의 정석'을 토대로 정리하였습니다.
'Develop > Bit Camp & 자바의 정석' 카테고리의 다른 글
16. 네트워킹 (0) | 2018.05.23 |
---|---|
12. java.lang 패키지와 유용한 클래스 (0) | 2018.05.20 |
12-2. 애너테이션 (0) | 2018.05.09 |
오라클설치 (0) | 2018.05.08 |
12-1. 지네릭스 (0) | 2018.05.08 |
댓글