1.12 Properties
Properties는 HashMap의 구버전인 Hashtable을 상속받아 구현한 것으로, Hashtable은 키와 값을 (Object, Object)의 형태로 저장하는데 비해 Properties는 (String, String)의 형태로 저장하는 보다 단순화된 컬렉션 클래스이다.
주로 애플리케이션의 환경설정과 관련된 속성(property)을 저장하는데 사용되며 데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공한다. 그래서 간단한 입출력은 Properties를 활용하면 몇 줄의 코드로 쉽게 해결될 수 있다.
Properties는 Hashtable을 상속받아 구현한 것이라 Map의 특성상 저장순서를 유지하지 않는다.
*Iterator가 아닌 Enumeration을 사용
1.13 Collections
Arrays - 배열과 관련된 메서드 제공
Collections - 컬렉션과 관련된 메서드 제공
fill(), copy(), sort(), binarySearch() 등의 메서드는 두 클래스에 모두 포함되어 있으며 같은 기능을 한다.
컬렉션의 동기화
ArrayList와 HashMap과 같은 컬렉션은 동기화를 자체적으로 처리하지 않고 필요한 경우에만 java.util.Collections클래스의 동기화 메서드를 이용해서 동기화처리가 가능하도록 변경하였다.
Collections클래스에는 다음과 같은 동기화 메서드를 제공,동기화가 필요할때 해당하는것 사용
static Collection synchronizedCollection(Collection c)
static List synchronizedList(List list)
static Set synchronizedSet(Set s)
static Map synchronizedMap(Map m)
static SortedSet synchronizedSortedSet(SortedSet s)
static SortedMap synchronizedSortedMap(SortedMap m)
이들을 사용하는 방법
List syncList = Collections.synchronizedList(new ArrayList(...));
↑동기화된 List ↑동기화 되지 않은 List
사용방법 : List syncList = Collections.synchronizedList(new ArrayList(…));
변경불가 컬렉션 만들기
컬렉션에 저장된 데이터를 보호하기 위해서 컬렉션을 변경할 수 없게, 즉 읽기전용으로 만들어야 할 때 아래 메서드 사용
주로 멀티 쓰레드 프로그래밍에서 여러 쓰레드가 하나의 컬렉션을 공유하다보면 데이터가 손상될 수 있는데, 이를 방지하려면 아래 메서드 사용
static Collection unmodifiableCollection(Collection c)
static List unmodifiableList(List list)
static Set unmodifiableSet(Set s)
static Map unmodifiableMap(Map m)
싱글톤 컬렉션 만들기
단 하나의 객체만을 저장하는 컬렉션을 만들고 싶을 경우 아래의 메서드 사용
static List singletonList(Object o)
static Set singleton(Object o) //singletonSet 아님
static Map singletonMap(Object key, Object value)
한 종류의 객체만 저장하는 컬렉션 만들기
컬렉션에 지정된 종류의 객체만 저장할 수 있도록 제한하고 싶을 때 아래의 메서드 사용
static Collection checkedCollection(Collection c, Class type)
static Collection checkedList(List list, Class type)
사용방법은 다음과 같이 두 번째 매개변수에 저장할 객체의 클래스를 지정하면 된다.
List list = new ArrayList();
List CheckedList = checkedList(List String.class) //String만 저장가능
출처 : 남궁성. 「자바의 정석」. 도우출판. 2016
'프로그래밍언어 > Java' 카테고리의 다른 글
[자바의 정석] 12. 열거형(enums) (0) | 2023.09.29 |
---|---|
[자바의 정석] 12. 지네릭스 (0) | 2023.09.28 |
[자바의 정석] 11. 컬렉션 프레임웍 - HashMap과 Hashtable / TreeMap (0) | 2023.08.07 |
[자바의 정석] 11. 컬렉션 프레임웍 - HashSet / TreeSet (0) | 2023.08.06 |
[자바의 정석] 11. 컬렉션 프레임웍 - Arrays / Comparator와 Comparable (0) | 2023.08.06 |