본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

컬렉션과 관련된 메서드를 제공하는 Collections: 컬렉션의 동기화, 변경불가 컬렉션, 싱글톤 컬렉션, 한 종류의 객체만 저장하는 컬렉션

Collections

Collections는 컬렉션과 관련된 메서드를 제공

 

컬렉션의 동기화

멀티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근하여

데이터의 일관성을 유지하기 위해 공유되는 객체에 동기화가 필요하다.

https://standout.tistory.com/634

 

멀티 프로세스와 멀티 스레드

앞서 프로세스와 스레드에 대해 알아봤다, 필요하다면 다시 복습해보자. https://standout.tistory.com/498 프로세스/스레드 방식 프로세스 방식 매번 새로운 프로세스를 생성하여 처리하는 방식 멀티태

standout.tistory.com

 

 

그러나 멀티스레드가 아닌경우에는 오히려 이러한 기능이 기능을 저하시킨다.

구버전 클래스들은 자체 동기화처리가 되어있으나 ArrayList와 HashMap과 같은 컬렉션들은 필요한 경우에만 메서드를 이용해 가능하도록 변경되었다.

아래는 동기화 메서드

 

static Collection syschronizedCollection(Collection c)
주어진 컬렉션을 동기화된 상태로 만든 후 반환합니다.

Collection<String> collection = new ArrayList<>();
Collection<String> synchronizedCollection = Collections.synchronizedCollection(collection);




static List syschronizedList(List list)
주어진 리스트를 동기화된 상태로 만든 후 반환합니다.

List<String> list = new ArrayList<>();
List<String> synchronizedList = Collections.synchronizedList(list);




static Set syschronizedSet(Set s)
주어진 집합을 동기화된 상태로 만든 후 반환합니다.

Set<String> set = new HashSet<>();
Set<String> synchronizedSet = Collections.synchronizedSet(set);




static Map syschronizedMap(Map m)
주어진 맵을 동기화된 상태로 만든 후 반환합니다.

Map<String, Integer> map = new HashMap<>();
Map<String, Integer> synchronizedMap = Collections.synchronizedMap(map);




static SortedSet syschronizedSortedSet(SortedSet s)
주어진 정렬된 집합을 동기화된 상태로 만든 후 반환합니다.

SortedSet<String> sortedSet = new TreeSet<>();
SortedSet<String> synchronizedSortedSet = Collections.synchronizedSortedSet(sortedSet);




static SortedMap syschronizedSortedMap(SortedMap m)
주어진 정렬된 맵을 동기화된 상태로 만든 후 반환합니다.

SortedMap<String, Integer> sortedMap = new TreeMap<>();
SortedMap<String, Integer> synchronizedSortedMap = Collections.synchronizedSortedMap(sortedMap);

 

 

 

 

 

 

 

 

 

변경불가 컬렉션

컬렉션에 저장된 데이터를 보호하기 위해서 읽기전용으로 만들어야할때가있다.

static Collection unmodifiableCollection(Collection c)
주어진 컬렉션을 수정할 수 없는 상태로 만든 후 반환합니다.

Collection<String> collection = new ArrayList<>();
Collection<String> unmodifiableCollection = Collections.unmodifiableCollection(collection);




static List unmodifiableList(List list)
주어진 리스트를 수정할 수 없는 상태로 만든 후 반환합니다.

List<String> list = new ArrayList<>();
List<String> unmodifiableList = Collections.unmodifiableList(list);




static Set unmodifiableSet(Set s)
주어진 집합을 수정할 수 없는 상태로 만든 후 반환합니다.

Set<String> set = new HashSet<>();
Set<String> unmodifiableSet = Collections.unmodifiableSet(set);




static Map unmodifiableMap(Map m)
주어진 맵을 수정할 수 없는 상태로 만든 후 반환합니다.

Map<String, Integer> map = new HashMap<>();
Map<String, Integer> unmodifiableMap = Collections.unmodifiableMap(map);




static NavigableSet unmodifiableNavigableSet(NavigableSet m)
주어진 탐색 가능한 집합을 수정할 수 없는 상태로 만든 후 반환합니다.

NavigableSet<String> navigableSet = new TreeSet<>();
NavigableSet<String> unmodifiableNavigableSet = Collections.unmodifiableNavigableSet(navigableSet);




static SortedSet unmodifiableSortedSet(SortedSet s)
주어진 정렬된 집합을 수정할 수 없는 상태로 만든 후 반환합니다.

SortedSet<String> sortedSet = new TreeSet<>();
SortedSet<String> unmodifiableSortedSet = Collections.unmodifiableSortedSet(sortedSet);




static NavigableMap unmodifiableNavigableMap(NavigableMap m)
주어진 탐색 가능한 맵을 수정할 수 없는 상태로 만든 후 반환합니다.

NavigableMap<String, Integer> navigableMap = new TreeMap<>();
NavigableMap<String, Integer> unmodifiableNavigableMap = Collections.unmodifiableNavigableMap(navigableMap);




static SortedMap unmodifiableSortedMap(SortedMap m)

주어진 정렬된 맵을 수정할 수 없는 상태로 만든 후 반환합니다.

SortedMap<String, Integer> sortedMap = new TreeMap<>();
SortedMap<String, Integer> unmodifiableSortedMap = Collections.unmodifiableSortedMap(sortedMap);



 

 

 

 

 

 

싱글톤 컬렉션

단하나의 객체만을 저장하는 컬렉션을 만들수있다.

매개변수로 저장할 요소를 지정하면 해당요소를 저장하는 컬렉션을 반환하며 반환된 컬렉션은 변경할 수 없다.

https://standout.tistory.com/150

 

객체는 오로지 하나, 싱글톤패턴

객체를 하나만 나오게 하는 패턴 자주사용되지않음, 안정성을 요구할때 이용. 1. 변수를 하나 만들어 접근제한 + 고정한다. private static Company instance = new Company(); 2. 생성자를 private로 지정한다. pri

standout.tistory.com


static List singletonList(Object o)
주어진 요소를 포함하는 수정할 수 없는 리스트를 생성합니다.

Object element = "example";
List<Object> singletonList = Collections.singletonList(element);

 

 

 

static Set singletonSet(Object o)
주어진 요소를 포함하는 수정할 수 없는 집합을 생성합니다.

Object element = "example";
Set<Object> singletonSet = Collections.singletonSet(element);

 

 

static Map singletonMap(Object key, Object value)
주어진 키와 값을 포함하는 수정할 수 없는 맵을 생성합니다.

Object key = "key";
Object value = "value";
Map<Object, Object> singletonMap = Collections.singletonMap(key, value);

 

 

 

 

 

 

 

한 종류의 객체만 저장하는 컬렉션

컬렉션에는 모든 종류의 객체를 저장할 수 있는것은 장점이나 단점이기도하다.

컬렉션에 지정된 종류의 객체만 저장할 수 있도록 제한할 수 있다.

두번째 매개변수에 저장할 객체의 클래스를 지정하면 된다.

컬렉션이 저장할 요소의 타입을 제한하는 것은 제네릭스로 간단히 처리할수 있으나 호환성에 의해 제공된다.

 

static Collection checkedCollection(Collection c, Class type)
주어진 컬렉션에 대해 요소의 형식을 검사하는 수정 가능한 컬렉션을 생성합니다.

Collection<String> collection = new ArrayList<>();
Collection<String> checkedCollection = Collections.checkedCollection(collection, String.class);

 

 

 

static List checkedList(List list, Class type)
주어진 리스트에 대해 요소의 형식을 검사하는 수정 가능한 리스트를 생성합니다.

List<Integer> list = new ArrayList<>();
List<Integer> checkedList = Collections.checkedList(list, Integer.class);

 

 

static Set checkedSet(Set s, Class type)
주어진 집합에 대해 요소의 형식을 검사하는 수정 가능한 집합을 생성합니다.

Set<Double> set = new HashSet<>();
Set<Double> checkedSet = Collections.checkedSet(set, Double.class);

 

 

 

static Map checkedMap(Map m, Class keyType, Class valueType)
주어진 맵에 대해 키와 값의 형식을 검사하는 수정 가능한 맵을 생성합니다.

Map<String, Integer> map = new HashMap<>();
Map<String, Integer> checkedMap = Collections.checkedMap(map, String.class, Integer.class);

 

 

 

 

 

static Queue checkedQueue(Queue queue, Class type)
주어진 큐에 대해 요소의 형식을 검사하는 수정 가능한 큐를 생성합니다.

Queue<Boolean> queue = new LinkedList<>();
Queue<Boolean> checkedQueue = Collections.checkedQueue(queue, Boolean.class);

 

 

 

 

 

static NavigableSet checkedNavigableSet(NavigableSet s, Class type)
주어진 탐색 가능한 집합에 대해 요소의 형식을 검사하는 수정 가능한 탐색 가능한 집합을 생성합니다.

NavigableSet<Long> navigableSet = new TreeSet<>();
NavigableSet<Long> checkedNavigableSet = Collections.checkedNavigableSet(navigableSet, Long.class);

 

 

 

static SortedSet checkedSortedSet(SortedSet s, Class type)
주어진 정렬된 집합에 대해 요소의 형식을 검사하는 수정 가능한 정렬된 집합을 생성합니다.

SortedSet<Float> sortedSet = new TreeSet<>();
SortedSet<Float> checkedSortedSet = Collections.checkedSortedSet(sortedSet, Float.class);

 

 

 

static NavigableMap checkedNavigableMap(NavigableMap m, Class keyType, Class valueType)
주어진 탐색 가능한 맵에 대해 키와 값의 형식을 검사하는 수정 가능한 탐색 가능한 맵을 생성합니다.

NavigableMap<String, Double> navigableMap = new TreeMap<>();
NavigableMap<String, Double> checkedNavigableMap = Collections.checkedNavigableMap(navigableMap, String.class, Double.class);

 

 

 

static SortedMap checkedSortedMap(SortedMap m, Class keyType, Class valueType)
주어진 정렬된 맵에 대해 키와 값의 형식을 검사하는 수정 가능한 정렬된 맵을 생성합니다.

SortedMap<Character, Boolean> sortedMap = new TreeMap<>();
SortedMap<Character, Boolean> checkedSortedMap = Collections.checkedSortedMap(sortedMap, Character.class, Boolean.class);