HashSet
HashSet - 순서x , 중복x
- List 순서o ,중복o HashSet과 반대
- Set 인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면 LinkedHashSet클래스를 사용
- 저장하기전에 기존에 같은 객체가 있는지 확인한다
- boolean add(Object o) 는 저장할 객체의 equals()와 hashCode()를 호출한다 equals(),hashCode()가 오버라이딩 되어 있어야 함
HashSet 주요 메서드
- initalCapacity: 초기용량 , loadFactor: ex)0.8이면 80퍼만큼 차면 초기용량 변경
- HashSet()
- HashSet(Collection c)
- HashSet(int initialCapacity)
- HashSet(int initialCapcity,float loadFactor)
- add(),addAll(),remove(),removeAll(Collection c),
retainAll(Collection c)조건부삭제 차집합,
clear()
- cotains(Object o) 포함된 객체인지
containsAll(Collection c) 모두포함하는지
isEmpty(),size(),toArray(),toArray(Object[] a)
실습
-
HashSet 기본 특징

-
HashSet 랜덤 숫자 출력,정렬

-
HashSet 사용시 equals(),hashCode() 오버라이딩
직접 코딩,이클립스를 이용해서도 가능


-
교집합,차집합,합집합
쉽게하는 방법으로 메소드 사용하면 쉽다


TreeSet
- 범위 검색에 유리하다!
- 이진 탐색 트리(binary search tree) 로 구현됨
- 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖는다
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashSet보다 데이터 추가, 삭제에 시간이 더 걸림
이진 탐색 트리(binary search tree)
- 이진 트리의 한 종류이다
- 부모보다 작은 값은 왼쪽 큰값은 오른쪽에 저장한다
TreeSet 데이터 저장 과정
- 7,4,9,1,5 의 순서로 데이터를 저장하면
- 트리를 따라 내려가면서 값을 비교 작으면 왼쪽 크면 오른쪽에 저장한다
- 맨위에서 부터 비교하면서 내려간다
TreeSet 주요 생성자와 메서드
- TreeSet()
- TreeSet(Collection c) : 주어진 컬렉션을 저장
- TreeSet(Comparator comp) : (정렬기준) 으로 정렬하는 TreeSet생성
- Object first() : 정렬된 순서에서 첫 번째 객체를 반환
- Object last() : 정렬된 순서에서 마지막 객체를 반환
- Object ceiling(Object o) : 지정된 객체와 같은 객체를 반환, 없으면 큰 값을 가진 객체중
가장 가까운 값의 객체를 반환
- Object floor(Object o) : 지정된 객체와 같은 객체를 반환, 없으면 작은 값을 가진 객체중
가장 가까운 값의 객체를 반환
- Object higher(Object o) : 지정된 객체보다 큰 값을 가진 객체중 제일 가까운 값을 반환
- Object lower(Object o) : 지정된 객체보다 작은 값을 가진 객체중 제일 가까운 값을 반환
- SoertedSet subSet(Object fromElement, Object toElement) : 범위 검색 의 결과를 반환한다
- SoertedSet headSet(Object toElement) : 지정된 객체보다 작은 값 반환
- SoertedSet tailSet(Object fromElement) : 지정된 객체보다 큰 값 반환
TreeSet 실습
- TreeSet 정렬기준 주기


TreeSet 범위검색
- subSet(),headSet(),tailSet()
- 검색 방법. ex) headSet 트리에서 50이라는 숫자보다 작은값은 전부 왼쪽아래의 값들
트리 순회(tree traversal)
- 이진 트리의 모든 노드를 한번씩 읽는 것을 트리 순회라고 한다
- 전위,중위,후위 순회법이 있으며 , 중위 순회하면 오름차순 정렬된다
HashMap
HashMap과 Hashtable
- 순서x 중복x(키x,값o)
- Map인터페이스를 구현한 대표적인 컬렉션 클래스
- Map인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장
- HashMap(동기화X)은 Hashtable(동기화O)의 신버전
- 순서를 유지하려면, LinkedHashMap클래스를 사용하면된다
TreeMap
- 키,값으로 저장
- TreeSet과 같은 특성
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashMap보다 데이터 추가,삭제가 더걸림
**HashMap의 키(Key)와 값(value)
- 해싱 기법으로 데이터를 저장. 데이터가 많아도 검색이 빠르다
- Map 인터페이스를 구현 데이터를 키와 값의 쌍으로 저장한다
해싱(1/3) 환자정보관리
- 실생활에서 환자 정보관리
- 년도별로 서랍에 00년 10년 20년 30년으로 환자 정보를 분류함
- 주민번호 65xxxx-xxxxxxx 환자 정보를 찾을때 60년대 서랍에서 찾으면 시간 단축
- 해시함수에서 key(주민번호)를 받으면 index(서랍,저장위치)를 알려준다
- 해시함수를 이용해서 저장&읽기
해싱(2/3)
- 해시함수로 해시테이블에 데이터를 저장,검색
- key(주민번호)를 받으면 index(서랍,저장위치)를 알려준다
- 해시테이블은 배열과 링크드 리스트가 조합된 형태
- 배열의 장점: 접근성 , 링크드리스트 장점: 변경에유리 이걸 다 갖고있다
- 데이터를 분류되어 저장해서 검색속도가 매우 빠르다
해싱(3/3)
- 키로 해시함수를 호출해서 해시코드를 얻는다 (몇번째 서랍에 있는지)
- 링크드 리스트에서 키와 일치하는 데이터를 찾는다
- 해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야 한다.
서로 다른 키일지라도 같은 값의 해시코드를 반환할 수도 있다.
HashMap - 주요메서드
- HashMap()
- HashMap(int initialCapacity)
- HashMap(int initialCapacity, float loadFactor)
- HashMap(Map m)
- Object put(Object key,Object value) : 저장
- Object put(Map m) : 전부 저장
- Object remove(Object key) : 삭제
- Object replace(Object key, Object value) : 변경
- boolean replace(Object key, Object oldValue,Object new Value) : 변경
- Set entrySet() : 키와 값을 쌍으로 얻어온다 / 읽기
- Set keySet() : 키 값만 가져온 / 읽기
- Collection values() : 값만 가져옴 /읽기
- Object get(Object key) : 키를 넣으면 값을 반환함
- Object getOrDefault(Object key, Object defaultValue):키를 넣어 반환 값이 없으면 디폴트 값을 반환한다
- boolean containsKey,Value(Object key,Value) : 포함확인
- size() , isEmpty(),clear(),clone()
HashMap 실습
Collections
Collections 컬렉션을 위한 메서드(static)를 제공
- 컬렉션 채우기 fill(), 복사 copy(), 정렬 sort() ,검색 binarySearch 등 제공
- 컬렉션 동기화 : synchronizedXXX()
- 변경불가 컬렉션 만들기 : unmodifiableXXX()
- 싱글톤 컬렉션 만들기 : singletonXXX()
객체하나만 저장할수있는 컬렉션
- 한 종류의 객체만 저장하는 컬렉션 만들기 : checkedXXX()
Collections 메서드 실습
컬렉션 클래스 정리 & 요약
-
ArrayList : 무작위 검색 가능 , 추가 삭제가 힘듬 Object[]배열기반
Stack 을 구현하기 적합
-
LinkedList : ArrayList에서 추가 삭제가 개선됨 대신 순차접근만 가능 검색도 순차로
Queue 를 구현하기 적합
연결기반을 변형해 TreeMap
-
TreeMap은 최대 2개까지만 연결 허용/ 범위검색,정렬의 장점이있다
key만 이용 TreeSet
-
HashMap: 위의 두가지 장점을 결합 추가,삭제,검색 향상
key 만 이용 HashSet