ch11 컬렉션 프레임웍
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등
- 컬렉션의 동기화 -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
요약
Author And Source
이 문제에 관하여(ch11 컬렉션 프레임웍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@happymink/ch11-컬렉션-프레임웍저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)