본문 바로가기
Java/Java

국비지원 자바 복습 9(Generic, 컬렉션 프레임워크)

by code2772 2022. 10. 6.

[ 목차 ]

    728x90
    반응형

    1. 제네릭(Generic)

    클래스나 메소드에서 사용할 데이터의 타입을 컴파일시에 미리 지정하는 방법

    제네릭을 사용하는 이유
    - 다양한 타입의 객체의 재사용을 높일 수 있음
    - 클래스에서 사용할 타입을 외부에서 사용
    - 반복적인 코드, 불필요한 코드를 사용하지 않도록 함
    - 강제적인 형변환을 발생시키지 않음



    ✔ Object 클래스
    - 자바의 모든 클래스의 최상위 조상 클래스
    - 모든 타입은 Object 클래스 객체화 시킬 수 있음
    - 기본 데이터 타입을 객체화 시킨 래퍼타입으로 대입 받을 수 있음





    2. 컬렉션 프레임워크(Collection Framework)
    - 여러가지 데이터를 메모리에 쉽고 효과적으로 처리할 수 있도록 제공하는 클래스들릐 집합
    - 자료구조를 구현한 클래스들의 모음

    @ 자료구조 :
    - 데이터를 효율적으로 관리할 수 있는 데이터 구조를 의미
    - 데이터의 특성에 따라 체계적으로 구조화 함

    @ 알고리즘 :
    - 어떤 문제를 풀기 위한 절차 및 방법
    - 어떤 믄제에 대해 입력을 넣으면 원하는 출력을 얻을 수 있도록 만드는 프로그래밍


    @ List 인터페이스 :
    - 순서가 있는 데이터들의 집합으로 데이터의 중복을 허용
    Vector, ArrayList, Queue, Stack, LinkedList

    Vector 클래스
    - 동적인 길이로 여러 데이터형을 저장하기 위해 사용
    - 자바 1.0부터 존재하는 레거시 클래스
    - 배열과 동일하게 정주 인덱스를 이용하여 엑세스를 할 수 있음
    - 동기화되어 있으며 한번에 하나의 스레드만 벡터의 메소드를 호출할 수 있음

     


    ArrayList 클래스
    - 동적인 길이로 여러 데이터형을 저장하기 위해 사용
    - 배열과 동일하게 정수 인덱스를 이용하여 엑세스를 할 수 있음
    - 비동기식을 사용하여 멀티 스레드를 지원(벡터와 차이점)

     


    🎁 Iterator 인테페이스
    컬렉션 프레임워크 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는
    iterator() 메소드를 정의하여 각 요서에 접근하도록 설계
    - 자바의 컬렉션에 저장되어 있는 요소들을 읽어오는 방법
    - 컬렉션으로부터 정보를 얻어내는 방법

    Iterator 장단잠
    장점 : 컬렉션 프레임워크 종류에 관계없이 일관성있게 프로그래밍을 할 수 있음
    단점 : size 메소드를 얻어와서 반복처리하는 것보다 속도가 좋지 못함

    ✔ 동기식
    프로그램을 차례(순서)대로 처리
    ✔비동기식
    여러개의 프로그램을 동시에 처리, 시간이 오래걸리면 다음 문장으로 이동 후 동작하는 방식

    Queue 클래스
    - FIFO( First In First Out)
    - 큐의 한쪽끝을 프론트로 정하여 삭제 연산만 수행함
    - 다른 한쪽끝을 리어로 정의하고 삽입 연산만 수행함
    - 푸시메시지, 운영체제의 스케줄러

     


    stack 클래스
    - LIFO(Last Input First Out)
    - 한쪽 끝에서만 자료를 넣고 뺼 수 있는 형식의 자료구조
    - 브라우저의 뒤로가기 앞으로 가기

     


    LinkedList 클래스
    - 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식
    - ArrayList에 비해 데이터의 추가나 삭제가 빠름
    - 인덱스가 없기 때문에 특정 요소에 접근이 느림
    - 탐색속도가 떨어짐 - 원하는 주소를 찾기위해 링크를 타고 넘어가야하기 때문에 느리다.
    - 저장공간을 효율적으로 사용할 수 있다.



    @ Set 인터페이스 :
    - 순서가 없는 데이터 집합으로 데이터의 중벅을 허용하지 않음
    HashSet, TreeSet

    HashSet 클래스
    - 데이터를 중복해서 저장할 수 없음(중복은 자동으로 제거)
    - 저장 순서가 유지되지 않음
    - 정렬을 하지 않음
    - 하나의 null값을 저장할 수 있음

     


    TreeSet 클래스
    - 데이터를 중복해서 저장할 수 없음(중복은 자동으로 제거)
    - 저장 순서가 유지되지 않음
    - 하나의 null값을 저장할 수 있음
    - 오름차순으로 정렬
    - 이진 탐색 트리 구조로 이루어져 있음

     


    ✔ 이진 탐색 트리
    추가, 삭제에는 시간이 걸리지만 정렬, 검색에 높은 성능을 자랑하는 자료구조

    @ Map 인터페이스 :
    - 키와 값을 한 쌍으로 이루어지는 데이터의 집합으로 순서가 없고, 키는 중복으로 허용하지 않지만 값운 중복으로 허용



    과제.
    학생 관리 프로그램을 만들어보자.

    메뉴
    1. 학생입력 -----> 학번, 이름, 나이, 연락처
    2. 학생리스트 -------> 학번으로 오름차순
    3. 학생검색
    4. 학생삭제
    5. 종료













    반응형