컬렉션 프레임웍(3)

roglog·2021년 7월 13일
0

java의 정석

목록 보기
30/36

8. HashSet


  • Set인터페이스를 구현한 가장 대표적인 컬렉션
  • 저장순서를 유지하지 않으므로 저장순서를 유지하고자 한다면 LinkedHashSet을 사용해야 함
  • HashSet은 내부적으로 HashMap을 이용해서 만들어졌으며, HashSet이란 이름은 해싱을 이용해서 구현했기 때문에 붙여진 것임

9. TreeSet


  • 이진검색트리라는 자료구조의 형태로 데이터를 저장하는 컬랙션 클래스
  • 트리는 데이터를 순차적으로 저장하는 것이 아니라 저장위치를 찾아서 저장해야하고, 삭제하는 경우 트리의 일부를 재구성해야하므로 링크드 리스트보다 데이터의 추가/삭제시간은 더 걸린다. 대신 배열이나 링크드 리스트에 비해 검색과 정렬기능이 더 뛰어남

10. HashMap과 HashTable


  • Hashtable는 HashMap의 구버전
  • Map이므로 키와 값을 묶어서 하나의 데이터(entry)로 저장
  • 해싱을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보임
  • key나 value에 null 저장 가능
  • key와 value 모두 Object타입으로 저장하기 때문에 HaspMap의 값으로 HashMap을 다시 저장할 수 있음

*해싱과 해시함수

  • 해싱: 해시함수를 이용해서 데이터를 해시테이블에 저장하고 검색하는 기법
  • 데이터 검색 과정
    1. 검색하고자 하는 값의 키로 해시함수 호출
    2. 해시함수의 계산결과(해시코드)로 해당 값이 저장되어 있는 링크드리스트를 찾음
    3. 링크드 리스트에서 검색한 키와 일치하는 데이터를 찾음

11. TreeMap


  • 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장
  • 검색과 정렬에 적합한 컬랙션 클래스
  • 검색에 관한한 대부분의 경우에서 HashMap이 TreeMap보다 더 뛰어나므로 HashMap을 사용하는 것이 좋으나, 범위검색이나 정렬이 필요한 경우에는 TreeMap이 더 좋음

12. Properties


  • (String, String)형태로 key, value를 저장하는 보다 단순화된 컬렉션클래스
  • 애플리케이션의 환경설정과 관련된 속성(property)을 저장하는데 사용되며 데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공

13. Collections


  • 컬렉션과 관련된 메서드를 제공함

1) 컬렉션의 동기화

  • 새로 추가된 컬렉션(ArrayList, HashMap 등)은 동기화를 자체적으로 처리하지 않고 필요한 경우에만 동기화 메서드를 이용해서 동기화처리가 가능하도록 변경
  • 동기화가 필요할 때 'synchronized'를 붙임
    static Collection synchronizedCollection (Collection c)
    static List synchronizedList(List list)

2) 변경불가 컬렉션 만들기

  • 컬렉션에 저장된 데이터를 보호하기 위해서 컬렉션을 변경할 수 없게, 즉 읽기전용으로 만들어야 할 때 'unmodifiable'을 붙여서 사용
    static Set unmodifiableSet (Set s)
    static Map unmodifiableMap (Map m)

3) 싱글톤 컬렉션 만들기

  • 단 하나의 객체만을 저장하는 컬렉션을 만들고 싶을 때 'singleton'을 붙여서 사용
    static List singletonList(Object o)
    static Set singleton(Object o)
    static Map singletonMap(Object key, Object value)

4) 한 종류의 객체만 저장하는 컬렉션 만들기

  • 컬렉션에 지정된 종류의 객체만 저장할 수 있도록 제한하고 싶을 때
    static List checkedList(List list, Class type)

    List list = new ArrayList();
    List checkedList = checkedList(list, String.class) // String만 저장가능
    // 두 번째 매개변수에 저장할 객체의 클래스를 지정하면 된다.

java의 정석 chapter11

profile
Full Stack Developer 📚

0개의 댓글