ABOUT ME

-

Today
-
Yesterday
-
Total
-

Post Calendar

«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • Java Study[2022-09-15] - 객체지향프로그래밍(컬렉션 프레임워크)
    백엔드 2022. 9. 15. 22:52

    🔸 2022-09-15 목요일

    [객체지향프로그래밍]

    1. 컬렉션 프레임워크

    • 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리
    • java.util 패키지에 구현되어 있음
    • 개발에 소요되는 시간을 절약하고 최적화 된 라이브러리를 사용할 수 있음
    • Collection 인터페이스와 Map 인터페이스로 구성됨

    • Collection 인터페이스
      • 하나의 객체의 관리를 위해 선언된 인터페이스로 필요한 기본 메서드가 선언되어 있음
      • 하위List, Set 인터페이스가 있음
    분류 설명
    List 인터페이스 순서가 있는 자료관리, 중복 허용. 해당 인터페이스를 구현한 클래스는 ArrayList, Vectior, LinkedList, Stack, Queue 등이 있음
    Set 인터페이스 순서가 정해져 있지 않음, 중복을 허용하지 않음. 해당 인터페이스를 구현한 클래스는 HashSet, TressSet 등이 있음

    • Map 인터페이스
      • 쌍으로 이루어진 객체를 관리하는데 필요한 여러 메서드가 선언되어 있음
      • Map을 사용하는 객체는 key-value 쌍으로 되어 있고, key는 중복될 수 없음

    • 자료 구조

    • 배열 => ArrayList, 연속된 자료 구조(선형), 논리적 구조와 물리적 구조가 동일, 중간에 데이터가 빠지면 양 옆 데이터가 붙게 됨, 시간이 많이 소요,인덱스 검색이 용이함([i]번째 데이터
      추출)

    • LinkedList 같은 경우, 중간 데이터가 빠지면 Link만 조정해주면 됨, 시간이 단축, 동적 메모리가 허용하는 한 메모리를 추가하고 싶을 때 추가적으로 계속 연결해서 사용 가능

    • ArrayList를 구현해놓은 jdk가 ArrayList, Vector

    • LinkedList 라이브러리 제공


    • Stack은 위로 쌓아져있는 자료 구조 (LIFO : Last In First Out)
    • Queue는 가로로 들어가는 자료 구조 (FIFO : First In First Out, 선착순)
    • Array와 jdk에는 Stack이 제공되어 있고, ArrayList와 Vector 구현 가능
    • Queue도 ArrayList로 구현해서 많이 사용
    • Stack 자료 구조의 가장 상단 부분을 Top이라 하는데, 데이터를 넣는 함수 - push(), 데이터를 빼는 함수 - pop()
    • Queue 자료 구조의 가장 앞 부분을 Front, 뒤를 rear라 하는데, 들어가는 operation - enqueue(), 나오는 operation - dequeue()

    • hash 자료구조 => 검색을 위한 자료 구조
    • hash(key) 키를 주면, 인덱스 위치 값이 나타남 => index = hash(key)
    • hash 함수가 산술 연산이 가능하기 때문에 검색속도가 빠름
    • key는 중복되지 않음
    • hash 테이블은 꽉 차게 사용하지 않음, (자바 - HashSet, HashMap)
    • 약 75% 사용하고, 그 이후는 해당 테이블을 복사해서 사용
    • 가장 빨리 데이터를 찾아주는 알고리즘

    • 이진트리(binary tree)
    • 부모(parent) 트리 하위에 자식(child) 트리의 개수가 2개 보다 작거나 같음
    • BST(Binary Search Tree)는 검색을 위한 트리
    • 노드에 데이터가 들어갈 수 있는데, 중복되어 들어갈 수 없음
    • 항상 데이터를 넣을 때, 선행되어 넣은 값과 나중에 들어가는 값을 비교함
    • 비교 조건에 의해 더 작은 값Left Side에 더 큰 값은 Right Side에 넣음

    댓글

Designed by Tistory.