Set 계열 주요 메소드
< HashSet >
Set에 객체를 저장할 때 hash함수를 사용하여 처리 속도가 빠름.
동일 객체 뿐 아니라 동등 객체도 중복하여 저장하지 않음
< LinkedHashSet >
HashSet과 거의 동일하지만 Set에 추가되는 순서를 유지
< TreeSet >
순서를 유지하지는 않지만 오름차순으로 자동 정렬한다
(1)Set<Integer> lotto = new HashSet<Integer>(); (2)Set<Integer> lotto = new LinkedHashSet<Integer>(); (3)Set<Integer> lotto = new TreeSet<Integer>(); while(lotto.size() < 6) { int randome = (int)( Math.random() * 45 + 1 ); System.out.print(random + ", "); lotto.add(random); } System.out.println(lotto); \----------------------------------------------- 출력 값 random : 21, 15, 4, 15, 14, 25, 37 (1) [4, 21, 37, 25, 14, 15] (2) [21, 15, 4, 14, 25, 37] (3) [4, 14, 15, 21, 25, 37]
키(Key)와 값(Value)으로 구성되어 있으며, 키와 값은 모두 객체
키는 중복 저장을 허용하지 않고(Set방식), 값은 중복 저장 가능(List방식)
키가 중복되는 경우, 기존 키의 값에 해당하는 값을 덮어 씌움
구현 클래스 : HashMap, HashTable, LinkedHashMap, TreeMap
Map 계열 주요 메소드
Map에 담겨있는 요소들에 순차적으로 접근하기 위한 2가지 방법
for(String key : map.keySet()) { Object value = map.get(key); System.out.println(key + " : " + value); }
for(Map.Entry<String, Integer> temp : empMap.entrySet()) { System.out.println(temp); }
#### 8) 정리
>< List Interface >
>
- ArrayList : 상대적으로 빠르고 요소에 대해 순차적으로 접근할 수 있다.
>
- Vector : ArrayList의 이전 버전이며 모든 메서드가 동기화 되어 있다.
>
- LinkedList : 순서가 변경되는 경우 노드 링크만 변경하면 되므로 삽입, 삭제가 빈번 할 때 빠르다.
>< Set Interface >
>
- HashSet : 빠른 접근 속도를 가지고 있으나 순서를 예측할 수 없다.
>
- LinkedHashSet : 요소가 추가된 순서대로 접근할 수 있다.
>
- TreeSet : 요소들의 정렬 방법을 직접 지정할 수 있다.
>< Map Interface >
>
- HashMap : 중복을 허용하지 않고 순서를 보장하지 않으며 null 값을 허용한다.
>
- Hashtable : HashMap 보다는 느리지만 동기화를 지원하며 null 값을 허용하지 않는다.
>
- TreeMap : 정렬된 순서대로 Key와 Value를 저장하므로 빠른 검색이 가능하지만 요소를 추가할 때 정렬로 인해 오래걸린다.
>
- LinkedHashMap : HashMap과 기본적으로 동일하지만 입력한 순서대로 접근이 가능하다.