ch11 컬렉션 프레임웍

이민균·2021년 6월 19일
0

Java

목록 보기
4/4

654p ~ 668p

Map을 구현한 컬렉션 : 순서 X, 중복(키X, 값O)

데이터를 키와 값의 쌍으로 저장, 키는 중복 불가, 값은 중복 허용
Hashtable(Old) == HashMap(New)

1.11 TreeMap

  • 이진 검색 트리의 구조로 키와 값의 쌍으로 이루어진 데이터를 저장
  • TreeSet처럼 데이터를 정렬해서 저장하기에 저장 시간이 길다.
  • 정렬과 범위 검색에 유리한 컬렉션 클래스
  • HashMap보다 데이터 추가, 삭제에 시간이 더 걸림
  • 다수의 데이터에서 개별적인 검색은 TreeMap보다 HashMap가 빠르다.

예제 11-34 TreeMapEx1

1.12 Properties

  • HashMap의 구버전인 HashTable을 상속받아 구현한 것
  • HashTable은 키와 값을 (Obj, Obj)의 형태로 저장하는데 비해 Properties는 (Str, Str)형태로 저장하는 단순화된 컬렉션 클래스
  • 주로 어플리케이션의 환경 설정과 관련된 속성을 저장하는데 사용
  • 데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공

예제 11-35 )PropertiesEx 1,2,3,4

getProperty()는 Properties에 저장된 값을 읽어오는 일을 하는데, 만일 읽어오려는 키가 존재하지 않으면 지정된 기본값을 반환한다.

1.13 Collections - 컬렉션을 위한 메서드를 제공

유사 유용한 스태틱 메서드 제공 (Objects(객체), Arrays(배열), Collections(컬렉션))
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1. 컬렉션 채우기, 복사, 정렬, 검색 fill, copy, sort, binarySearch등

  1. 컬렉션의 동기화 -synchronizedXXX()
  • 컬렉션의 동기화
    멀티 쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에 데이터의 일관성을 유지하기 위해서는 공유되는 객체의 동기화가 필요하다
    ArrayList, HashMap과 같은 컬렉션은 동기화를 자체적으로 처리하지 않고 필요한 경우에만 동기화 메서드를 이용해 동기화처리가 가능하도록 변경했다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
3. 변경불가 컬렉션 만들기 - unmodifiableXXX()

  • 컬렉션에 저장된 데이터를 보호하기 위해서 읽기 전용으로 만들 때
List list = new ArrayList();
list = Collections.unmodifiableList(list);
list.add("aaa"); // 오류발생
list.remove("0"); //예외 발생

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
4. 싱글톤 컬렉션 만들기 - singletonXXX()

  • 단 하나의 객체만을 저장하는 컬렉션을 만들고 싶을 경우에
Set set = Collections.singleton("aaa");
set.add("bbb"); //예외 발생

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
5. 한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX()

  • 모든 종류의 객체를 저장할 수 있지만 , 컬렉션에 지정된 종류의 객체만 저장할 수 있도록 제한하고 싶을 때
  • 지네릭스로 간단하게 처리할 수 있지만 호환성 때문에 이런 메서드들을 제공한다.
 List list = new ArrayList();
 List checkedList= checkedList(list, String.class);
 checkedList.add("abc");
 checkedList.add(new Integer(3)); //에러발생
 

예제 11-39 CollectionsEx

요약

profile
바보민균

0개의 댓글