-
자바 스터디 4회차 - Iterator, ListIterator, Enumeratio, Map과 Iterator, Arrays, Comparator와 Comparable, HashSet, HashMap과 Hashtabl / 컬렉션 프레임워크(3)카테고리 없음 2024. 4. 16. 17:58
Iterator(new), ListIterator, Enumeration(old) !
컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
ListIterator는 Iterator의 접근성을 향상 시킨 것 (단방향 -> 양방향)
컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한
컬렉션에 iterator()를 호출해서 iterator를 구현한 객체를 얻어서 사용 (컬렉션 인터페이스)
Map과 Iterator!
Map에는 Iterator가 없다!
Map은 컬렉션의 자손이 아님!사용하려면 KeySet(), entrySet(), values()로 셋이나 컬렉션을 얻어와야 호출 가능
Arrays!
배열을 다루기 편리한 메서드(static) 제공 util 메서드라고도 함
1. 배열의 출력 - toString
2. 배열의 복사 - copyOf(), copyOfRange()
3. 배열 채우기 - fill(), setAll()
4. 배열의 정렬과 검색 - sort(), binarySearch()
5. 다차원 배열의 출력 - deepToString()
6. 다차원 배열의 비교 - deepEquals()
7. 배열을 List로 변환 - asList(Objec ... a) / 읽기 전용
8. 람다와 스트림 관련 - parallelXXX(), spliterator(), stream()
Comparator와 Comparable!
객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스
Comparable - 기본 정렬기준을 구현하는데 사용
Comparator - 기본 정렬기준 외에 다른 기준으로 정렬하고자할때 사용
정렬 = 두 대상을 비교하고 자리 바꿈, 대상과 기준이 있어야 함
compare()와 comparaTo()는 두 객체의 비교결과를 반환하도록 작성(같으면 0, 오른쪽이 크면 음수 작으면 양수)
sort() 정렬에는 대상과 기준이 있어야 함
HashSet! - 순서 X, 중복 X
Set은 객체를 저장하기 전에 기존에 같은 객체가 있는지 확인, 없으면 저장 있으면 저장 안함
boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출, 오버라이딩 되어 있어야 함
없으면 제대로 작동 안됨!
HashSet
- Set인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면 LinkedHashSet클래스를 사
TreeSet
- 범위 검색과 정렬에 유리한 컬렉션 클래스, HashSet보다 데이터 추가, 삭제에 시간이 더 걸림
- 이진 탐색 트리 (binary search tree)로 구현. 범위 탐색과 정렬에 유리, 진 트리는 모든 노드가 최대 2개의 하위 노드를 갖음
- 각 요소(node)가 나무(tree)형태로 연결 (LinkedList의 변형)
- 범위 검색 subSet(), headSet(), tailSet()
이진 탐색 트리 (binary search tree)
- 부모보다 작은 값은 왼쪽, 큰값은 오른쪽에 저장
- 데이터가 많아질 수록 추가, 삭제에 시간이 더 걸림(비교 횟수 증가)
이진 트리와 이진 탐색 트리의 차이점
이진 트리 - 배열에 저장된 데이터 탐색
이진 탐색 트리 - 연결 리스트 데이터에 대한 탐색
HashMap과 Hashtabl! - 순서 X, 중복(키 X, 값 O)
Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장함
HashMap(동기화 X)은 Hashtable(동기화 O)의 신버전 / 해시맵이 신버전!
TreeMap은 TreeSet과 같은 특성. 이진 탐색 트리
HashMap
- Map 인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면, LinkedHashMap클래스를 사용하면 됨
- 해싱(hashing) 기법으로 데이터를 저장. 데이터가 많아도 검색이 빠름
- put 사
Hashing
- 함수를 이용해서(해시 함수) 저장하고 읽어오는 것 / 해시 함수(hash function)로 해시테이블에 데이터를 저장, 검색
- 키값을 넣으면 index 저장위치를 알려줌 ex)환자정보관리
- 해시 함수는 Object.hash()로 불러오기
HashTable
- 해시테이블은 배열과 링크드 리스트가 조합된 형태 (링크드 리스트 여러개를 링크로 묶은 것
접근성과 변경에 유리한 을 합친 것)
TreeMap
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashMap보다 데이터 추가, 삭제에 시간이 더 걸림
- TreeSet은 TreeMap을 가지고 만듬! 특성이 같다 비교 저장
요 메서드는 책에서 보자..