본문 바로가기
Web/Java

Java(21) - 컬렉션프레임워크

by SeleniumBindingProtein 2022. 1. 28.
728x90
반응형

1. 자료(Data)와 자료구조(Data Structure)
    1) 자료(데이터)를 어디에 어떻게 관리할지...
        - 검색, 순회(iterate), 저장, 삭제, 변경,.....
    2) 데이터의 형태와 쓰임에 가장 적합한 자료구조를 쓰는 것은 매우 중요.
    3) 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음.

2. 자료구조 종류
    1) 한줄로 자료를 관리하기 (선형 자료구조)        
        - 배열(Array)
        - 연결리스트(LinkedList)   
        - 스택(Stack)
        - 큐(Queue
    2) 트리(tree)
    3) 그래프(graph)
    4) 해싱(hashing)     

3. 배열(Array) 구현
    1) 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조.
    2) 정해진 크기가 있음.
    3) 배열의 i번째 요소를 찾는 인덱스 연산이 빠름.
    4) JDK 클래스 : ArrayList, Vector....      

4. 컬렉션 프레임워크 
    1) 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리      
    2) java.util 패키지에 구현되어 있음.
    3) Collection 인터페이스와 Map 인터페이스로 구성됨.

5. Collection 인터페이스 
    1) 하나의 객체의 관리를 위해 선언된 인터페이스 
    2) 하위에 List, Set 인터페이스 
        - List : 순서가 있는 자료 관리. 중복 허용.
                 구현 클래스 -- ArrayList, Vector, LinkedList, Stack, Queue
        - Set : 순서가 정해져 있지 않음. 중복을 허용하지 않음.
                 구현 클래스 -- HashSet, TreeSet    

6. Map 인터페이스                      
    1) 쌍으로 이루어진 객체를 관리하는데 필요한 여러 메서드가 선언되어 있음.
    2) Map을 사용하는 객체 key-value쌍으로 되어 있고 key는 중복될수 없음.
    3) 구현 클래스 - HashMap, TreeMap, HashTable, Properties

7. List 인터페이스 
    1) 배열의 기능을 구현하기 위한 메서드가 선언됨.
    2) ArrayList와 Vector
        - 객체 배열 클래스 
        - 일반적으로 ArrayList를 더 많이 사용.
        - Vector는 멀티 쓰레드 프로그래밍에서 동기화를 지원
         (동기화(synchronization) -- 두 개의 쓰레드가 동시에 하나의 리소스에 접근할때
                                    순서를 맞추어서 데이터의 오류가 방지되도록함 )
    3) ArrayList와 LinkedList    
        - 자료의 순차적 구조를 구현한 클래스
        - ArrayList는 배열을 구현한 클래스로 논리적 순서와 물리적 순서가 동일함.
        - LinkedList는 논리적으로 순차적인 구조지만, 물리적으로는 순차적이지 않을수 있음.
            [자료(data) | 다음노드의 주소]         [자료(data) | 다음노드의 주소]     
    4) Stack 
        - LIFO(Last In First Out) : 맨 마지막에 추가된 요소가 가장 먼저 꺼내지는 자료구조 
        - 최근 자료 가져오기, 게임에서 무르기
        - 추가하기 : push , 삭제하기 : pop ,       top
        - ArrayList나 LinkedList로 구현할수 있음.
    5) Queue
        - FIFO(First In First Out) : 먼저 저장된 자료가 먼저 꺼내지는 자료구조 
        - 선착순, 대기열등을 구현할 때 가장 많이 사용되는 자료구조 
        - ArrayList나 LinkedList로 구현할수 있음.
        - 추가하기 : offer,  삭제하기 : poll,    맨앞: front, 맨뒤:rear

8. Iterator로 순회하기
    1) Collection의 객체를 순회하는 인터페이스 
    2) iterator() 메서드 호출 
    3) Iterator에 선언된 메서드 
        - boolean hasNext()  :  이후에 요소가 더 있는지를 체크하는 메서드.
                                요소가 있다면 true를 반환함.
        - E next() : 다음에 있는 요소를 반환함.

9. Set 인터페이스                                        
    1) Collection 하위의 인터페이스 
    2) 중복을 허용하지 않음. => 객체를 중복 저장 불가능
       하나의 null만 저장 가능함.
    3) List는 순서기반의 인터페이스지만, Set은 순서가 없음.
    4) get(i) 메서드가 제공되지 않음 (Iterator로 순회)
    5) 저장된 순서와 출력순서는 다를 수 있음.
    6) 아이디, 주민번호, 사번 등 유일한 값이나 객체를 관리할 때 사용
    7) TreeSet, HashSet 클래스 

10. HashSet 클래스 
    1) Set 인터페이스를 구현한 클래스 
    2) 중복을 허용하지 않으므로 저장되는 객체의 논리적 동등함 여부를 알기 위해
       equals()와 hashCode() 메서드를 재정의 해야함.      

11. Map 인터페이스 
    1) key - value pair의 객체를 관리하는데 필요한 메서드가 정의 됨.
    2) key는 중복 될수 없음. value는 중복 허용
    3) 검색을 위한 자료 구조
    4) key를 이용하여 값을 저장하거나 검색, 삭제 할때 사용함
    5) 구현 클래스 
        - HashMap, Properties, TreeMap, HashTable

12. HashMap 클래스
    1) Map 인터페이스를 구현한 클래스 중 가장 일반적으로 사용하는 클래스 
    2) pair 자료를 쉽고 빠르게 관리할 수 있음.      

728x90
반응형

'Web > Java' 카테고리의 다른 글

Java(24) - 내부클래스  (0) 2022.01.28
Java(22) - review3  (0) 2022.01.28
Java(20) - Generic 프로그래밍  (0) 2022.01.28
Java(18) - Class 클래스  (0) 2022.01.28
Java(16) - Object 클래스  (0) 2022.01.28

댓글