JAVA 컬렉션 프레임워크(Collection Framework)

컬렉션 프레임워크


  • 기본적으로 자바에서의 "프레임워크" => "잘 정의된, 약속된 클래스들"
  • 컬렉션이란, 
    • 데이터의 저장
    • 이와 관련된 알고리즘을 구조화 해 높은 프레임워크
    • 쉽게 자료구조와 알고리즘을 클래스로 구현해 놓은 것
  • 컬렉션 프레임워크를 구성하는 클래스들은 많은 양의 인스턴스를 다양한 형태로 저장하는 기능 제공
  • 이를 통해 다양하고 효율적으로 인스턴스 저장 가능
  • Colleection <E>
    • 이 인터페이스를 구현하는 제네릭 클래스는 모두 인스턴스를 저장 대상으로 삼음
    • 차이는 중복 저장 허용 유무, 저장 시 정렬 유무
    • List<E>
      • 동일한 인스턴스 중복 저장 허용
      • 인스턴스 저장 순서 유지
      • ArrayList<E>와 LinkedList<E>가 있음
      • ArrayList의 특징
        • 저장소 용량 늘리는데 많은 시간소요
        • 삭제에 연산과정이 김
        • 참조가 용이하여 빠른참조가능
      • LinkedList의 특징
        • 저장소 용량 늘리는 것이 간단
        • 삭제 간단
        • 참조가 다소 불편
    • iterator
      • Iterator<E> iterator()로 Collection<E>에 정의되어 있음
      • Iterator 에 정의된 메소드
        • boolean hasNext() 참조할 다음 번 요소가 존재하면 true 반환
        • E next() 다음번 요소를 반환
        • void remove() 현재 위치의 요소를 삭제
    • 이 인터페이스를 활용할 때는 반복자를 주로 활용하는데, 이는 저장되어 있는 자료들 전체를 검색하기에 알맞고, 저장방식을 다른 클래스로 바꿀 때 수정을 많이 안해도 되는 장점이 있기 때문
    • 기본자료형을 저장하는 것이 제네릭 기반으로는 불가하다 하였지만, 이를 대신하여 Auto Boxing, Unboxing을 이용하여 자료형 변환하지 않고 저장
    • Set<E>
      • 저장순서 유지하지 않음
      • 중복저장 허용하지 않음
      • 집합같은 특징을 지님
      • HashSet<E>와 TreeSet<E>가 있음
      • HashSet특징
        • Hash알고리즘을 통해 저장
        • Hash 값을 이용하여 검색하기 때문에 검색속도가 매우 빠름
        • 이를 public int hashCode()와 public boolean equals(Object obj)를 이용하여 검색, 비교함
        • 또한 위의 두 메소드를 적절히 오버라이딩 하여야 중복값을 잘 처리할 수 있음
      • TreeSet특징
        • Tree자료구조 기반으로 저장
        • 데이터를 정렬하여 저장하며 기준이 애매한 경우 직접 정의해야함
          • Comparable<T> 인터페이스
          • Comparator<T> 인터페이스
        • 위의 메소드는 인자로 전달된 obj가 
          • 작으면 양의 정수 반환
          • 크면 음의 정수 반환
          • 같으면 0
            이라는 원칙을 따라야 함
        • 이를 토대로 Tree mapping을 통해 만들어냄
    • Map<K,V>
      • key-value 방식으로 key는 데이터를 찾는 이름, value는 실직적인 데이터를 의미
      • 이 두가지를 같이 저장하여 검색할 때 유용
      • value에 상관없이 중복된 key의 저장 불가
      • value가 같아도 key가 다르면 둘 이상의 데이터 저장 가능
      • HashMap<K,V>
        • Hash알고리즘 기반으로 구현
      • TreeMap<K,V>
        • 트리 자료구조 기반으로 구현
        • navigableKeySet을 이용하여 집합형태로 key를 반환하여 이를 토대로 전체 데이터 검색

댓글

이 블로그의 인기 게시물

KV Language(Pycharm에 Highlighting 기능 설정하기)

Python 코딩 공부 시작과 Github 활용

Kivy Tutorial - PingPong