# 긍정의 한줄
"그 무엇도 바라지 마라"
We never reflect how pleasant it is to ask for nothing
아무것도 바랄 것이 없다는 것은 얼마나 큰 기쁨인지 우리는 미처 생각하지 못한다.
# 오늘의 독서
"어떻게 인생을 살 것인가?"
두려움을 이기는 가장 효과적인 방법, 정면 대결
두려움을 이기는 유일한 방법은 바로 정면 대결이다. 두려움을 있는 그대로 인정하고 용감하게 두려움을 마주하라. 이를 해낸다면 당신은 그것만으로 큰 힘을 얻어 두려움을 극복해낼 수 있을 것이다. 뛰어난 사람이 되길 원한다면 두려움이 엄슴해오는 순간 나를 일깨우는 주문을 걸어라.
[쑤린, 어떻게 인생을 살 것인가(ⓒ다연, 2022), 139p]
# 자바의 정석 11장 16/16
Comparator와 Comparable 29:20
- 객체 정령에 필요한 메서드(정렬기준제공)를 정의한 인터페이스
Comparable | 기본 정렬기준을 구현하는데 사용. |
Comparator | 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용 |
Ex11_7(정렬 예제, 역순 정렬, Comparator, Comparable 사용예제.)
Ex11_8(DescComp() 정렬 기준으로 정렬해주는 프로그램.)
HashSet(1) 14:46
▶HashSet 순서x, 중복x
- Set인터페이스를 구현한 대표적인 컬렉션 클래스.
- 순서를 유지하려면, Linked(연결)HashSet 클래스를 사용하면 된다.
▶TreeSet
- 범위 검색과 정렬에 유리한 컬렉션 클래스.
Ex11_9(HashSet에 저장된 요소들을 출력하는 프로그램.)
※ Iterator 객체를 이용하여 while 문으로 .hasNext() 메서드를 사용하여 읽어 올 객체가 남아있는 지 확인.
Ex11_10(Set은 정렬불가, List로 정렬)
1. Set의 모든 요소를 List에 저장
2. list를 정렬
3. list를 출력
HashSet(2) 19:53
- HashSet은 객체를 저장하기전에 기존에 같은 객체가 있는지 확인
같은 객체가 없으면 저장하고, 있으면 저장하지 않는다.
- boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출
equals()와 hashCode()가 오버라이딩 되어 있어야 함.
Ex11_11.java(hashCode()와 equals() 사용 예제, 인스턴스 나자신(this)이름과 나이를 p와 비교하는 프로그램)
Ex11_12.java(집합 A, 집합 B, 두 집합의 합집합, 교집합, 차집합 만들어지는 과정을 보여주는 예제.)
setA.retainAll(setB); // 교집합.
setA.addAll(setB); // 합집합.
setA.remove(setB); // 차집합
System.out.println(setA);
.. 개꿀이네..
TreeSet(1) 12:48
범위 탐색, 정렬
- 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리.
- 이진 트리(나무 뒤집은 모양)는 모든 노드가 최대 2개(0~2)의 하위 노드를 갖음
각 요소(node)가 나무(tree) 형태로 연결(LinkedList의 변형)
이진 탐색 트리(binary search tree)
- 부모보다 작은 값은 왼쪽 큰 값은 오른쪽에 저장
- 데이터가 많아질 수록 추가, 삭제에 시간이 더 걸림(비교 횟수 증가)
TreeSet - 데이터 저장과정 boolean add(Object o)
HashSet은 equals(), hashCode()로 비교, TreeSet은 compare()를 호출해서 비교.
단점 : 요소를 저장하며, 횟수가 점점 더 늘어나 시간이 많이 걸림.
TreeSet(2) 23:06
주요 생성자와 메서드.
TreeSet(Comparator comp) 비교 기준 제공.
Ex11_13.java(TreeSet은 범위 검색, 정렬, 정렬 필요없음, HashSet() 정렬필요)
TreeSet은 비교기준이 꼬오오오옥 필요하다, 추가 삭제에 시간이 많이 걸림!!
Ex11_14.java(TreeSet() 범위검색, subSet으로 범위 출력하기.)
Ex11_15.java(headSet(), tailSet() 사용예제)
HashMap(1) 16:48
- Map인터페이스를 구현. 데이터와 키와 값의 쌍으로 저장.(순서x, 중복(키x, 값o))
- HashMap(동기화X)은 Hashtable(동기화O)의 신버전
▶ HashMap
- Map인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면, LinkedHashMap클래스를 사용하면 된다.
- 해싱(hashing)기법으로 데이터를 저장. 데이터가 많아도 검색이 빠르다.
- Map인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장.
▶ TreeMap = TreeSet(같은 특성)
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashMap보다 데이터 추가, 삭제에 시간이 더 걸림.(비교해가면서 저장하기 때문에..)
▶ 해싱이란?
- 해시함수를 이용해서 저장하고 읽어오는 것.
- hash function로 hash table에 데이터를 저장, 검색 하는것.
- hash table은 배열과 링크드 리스트가 조합된 형태(2차원 배열)
▶hashTable에 저장된 데이터를 가져오는 과정
ⓛ 키로 hash function을 호출해서 hash code를 얻는다.
② hash code를 (hash function 반환값)에 대응하는 linked list를 배열에서 찾는다.
③ linked list 에서 key와 일치하는 data를 찾는다.
※ hash function 같은 key에 대해 항상 같은 hash code를 return해야 한다.
서로 다른 key일지라도 같은 value의 hash code를 return 할 수 있다.
HashMap(2) 19:07
HashMap의 주요메서드
Ex11_16.java(id, password 입력 예제 프로그램.)
Ex11_17.java(총점, 평균, 최고점수, 최저점수 출력 프로그램.)
key 값이같다면 value값이 바뀐다.
Ex11_18.java(빈도수(몇번 나왔는지) 계산 프로그램)
Collections클래스, 컬렉션 클래스 요약. 24:25
- Objects 객체, Array 배열, Collections 컬렉션
- 컬렉션 채우기, 복사, 정렬, 검색 = fill(), copy(), sort(), binarySearch() 등
- 컬렉션의 동기화 - synchronizedXXX()
- 변경불가(readOnly) 컬렉션 만들기 - unmodifiableXX() 수정불가!!
- 싱글톤 컬렉션 만들기 - SingletonXXX() 객체 한개만 저장.
- 한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX(), 한가지 타입 저장 가능.
'Daily > TIL' 카테고리의 다른 글
TIL 2022년 7월 12일 (0) | 2022.07.12 |
---|---|
TIL 2022년 07월 11일 (0) | 2022.07.11 |
TIL 2022년 07월 09일 (0) | 2022.07.09 |
TIL 2022년 07월 08일 (0) | 2022.07.08 |
TIL 2022년 07월 07일 (0) | 2022.07.07 |