TIL_230304_자바의 정석 복습_컬렉션 프레임워크 3

창고·2023년 3월 4일
0

Chapter 11. 컬렉션 프레임워크

1. 컬렉션 프레임워크

(10) HashMap과 Hashtable

  • Hashtable과 HashMap
    • HashMap이 새로운 버전이라고 할 수 있음
    • Map을 구현했으므로 키-값 쌍으로 하나의 데이터(Entry)로 저장
    • 해싱을 사용하여 많은 양의 데이터를 검색하는데에 뛰어난 성능을 보임
    • Entry라는 내부 클래스를 정의하고 Entry 타입의 배열을 선언
  • 키와 값
    • 키(key) : 컬렉션 내의 키 중에서 유일해야함
    • 값(value) : 키와 달리 데이터의 중복을 허용
  • 해싱과 해시 함수
    • 해싱 : 해시 함수를 이용해 데이터를 해시 테이블에 저장하고 검색하는 기법
    • 해시 함수는 데이터가 저장되어 있는 곳을 알려줌
  • HashMap에 저장된 데이터를 찾는 과정
    • 검색하고자 하는 값의 키로 해시 함수를 호출
    • 해시 함수의 계산 결과 (해시 코드) 로 해당 값이 저장되어 있는 링크드 리스트를 찾음
    • 링크드 리스트에서 검색한 키와 일치하는 데이터를 찾음

(11) TreeMap

  • 이진 검색 트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장
  • 검색 관한 부분에 대해서는 HashMap이 TreeMap보다 성능이 뛰어남
  • 범위 검색이나 정렬이 필요할 때엔 TreeMap을 사용하는 것이 적합

(12) Collections

  • Arrays가 배열과 관련된 메서드를 제공하듯 Collections는 컬렉션과 관련된 메서드를 제공
  • 컬렉션의 동기화
    • 멀티 쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있으므로 데이터의 일관성(consistency)을 유지하기 위해서는 공유되는 객체에 동기화가 필요
    • ArrayList, HashMap 컬렉션으 동기화를 자체적으로 처리하지는 않고 필요한 경우에만 Collections 클래스의 동기화 메서드를 이용해 동기화 처리가 가능
List syncList = Collections.synchronizedList(new ArrayList(...));
  • 변경 불가 컬렉션 만들기
    • unmodifiable~~()을 활용하여 컬렉션을 읽기 전용으로 만들 수 있음 (변경 불가)
  • 싱글톤 컬렉션 만들기
    • singleton~~~()
  • 한 종류의 객체만 저장하는 컬렉션 만들기
    • checked~~~()
    • 제네릭스가 나오기 이전인 JDK1.5 미만 버전에서 사용

(13) 컬렉션 클래스 정리 & 요약

  • 컬렉션 클래스 간의 관계
  • 컬렉션 클래스의 특징
    • ArrayList : 배열 기반, 데이터의 추가와 삭제에 불리, 순차적인 추가 삭제는 제일 빠름, 임의의 요소에 대한 접근성이 뛰어남
    • LinkedList : 연결 기반, 데이터의 추가와 삭제에 유리, 임의의 요소에 대한 접근성이 좋지 않음
    • HashMap : 배열과 연결이 결합된 형태, 추가 / 삭제 / 검색 / 접근성이 모두 뛰어남, 검색에는 최고의 성능을 보임
    • TreeMap : 연결 기반, 정렬과 검색(특히 범위 검색)에 적합, 검색 성능은 HashMap보다는 떨어짐
    • Stack : Vector를 상속받아 구현
    • Queue : LinkedList가 Queue 인터페이스를 구현
    • Properties : Hashtable을 상속 받아 구현
    • HashSet : HashMap을 이용해서 구현
    • TreeSet : TreeMap을 이용해서 구현
    • LinkedHashMap, LinkedHashSet : HashMap, HashSet에 저장 순셔 유지 기능 추가
profile
공부했던 내용들을 모아둔 창고입니다.

0개의 댓글