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

11. 컬렉션 프레임워크

by jaekk 2018. 5. 20.

11. 컬렉션 프레임워크.txt



컬렉션: 데이터 그룹

프레임웍: 표준화된 프로그래밍 방식


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() 오버라이딩 원칙













※ 남궁성 강사님 수업과 '자바의 정석'을 토대로 정리하였습니다.




http://book.naver.com/bookdb/book_detail.nhn?bid=10191151

'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

댓글