Chapter10 날짜와 시간 & 형식화
SimpleDateFormat
parse(String source) : source문자열을 날짜 데이터의 형식으로 변환해준다.
MessageFormat
데이터를 정해진 양식에 맞게 출력하도록 변환
Instant
에포크 타임부터 경과된 시간을 나노초 단위로 표현
Chapter11 컬렉션 프레임워크
: 데이터 군을 저장하는 클래스들을 표준화한 설계
Collection 인터페이스
List 인터페이스
Set 인터페이스
Map 인터페이스
key, value로 이루어진 컬렉션 클래스를 구현하는 데 사용되는 인터페이스
HashTable, HashMap, SortedMap, TreeMap 등의 구현체가 있다.
HashMap은 key와 value를 묶어서 하나의 데이터(Entry)로 저장한다.
HashMap의 메서드
- entrySet() : HashMap에 저장된 키와 값을 엔트리의 형태로 Set에 저장해서 반환
- getOrDefault(Object Key, Object defaultValue) : 지정된 키의 값을 반환, 없을 시 기본값으로 지정된 객체를 반환
데이터의 키와 값을 모두 Object 타입으로 저장한다.
해싱
해시함수를 이용해서 데이터를 해시테이블에 저장하고 검색하는 기법
1) 검색하고자 하는 키 값을 해시함수로 호출
2) 해시함수의 결과로 나온 해시 코드를 해당 값이 저장되어있는 링크드 리스트를 찾는다
3) 링크드 리스트에서 검색한 키와 일치하는 데이터를 찾는다.
ArrayList
List 인터페이스를 구현하기 때문에 데이터 저장 순서가 유지되고 중복이 허용된다.
Object[] 배열을 이용해서 데이터를 저장
LinkedList
크기를 변경할 수 없고, 비순차적인 데이터의 추가 또는 삭제에 시간의 많이 걸린다는 ArrayList의 단점을 보완해
Stack과 Queue
LIFO, FIFO의 형태로 구현된 자료구조이다.
Stack의 메서드
- empty()
- peek() : Stack의 맨 위에 있는 객체를 반환
- pop()
- push(Object item)
- search(Object o)
Queue의 메서드
- add(Object o)
- remove() : 객체를 꺼내 반환, 비어있을 때 Exception
- offer(Object o) : Queue에 객체를 저장
-element() : 삭제 없이요소를 읽어온다 .
- poll() : Queue에서 객체를 꺼내 반환. 비어있을 때 Null 반환
Priority Queue
Queue의 인터페이스 중 하나. 우선순위가 높은 것부터 꺼내게 된다.
저장공간을 배열로 사용하며, 각 요소를 힙의 형태로 저장한다.
Queue pq = new PriorityQueue();
pq.offer(3); // pq.offer(new Integer(3)); 으로 오토박싱
Deque(Double - Ended Queue)
양쪽 끝에 추가, 삭제할 수 있는 형태
Iterator, ListIterator, Enumeration
컬렉션에 저장된 요소를 접근하는 데 사용되는 인터페이스
Iterator() 메서드
- hasNext() : 읽어올 요소가 남았는지 반환
- next() : 다음 요소를 읽어서 반환한다.
- remove() : next()로 읽어온 요소를 삭제한다.
Collection c = ArrayList<>();
Iterator it = c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
ListIterator
Iterator을 상속받아 기능이 추가된 것
양방향으로 이동이 가능하며, ArrayList와 LinkedList에서 사용이 가능하다.
Arrays
toString() : 배열의 내용을 스트링으로 반환
copyOf() : 배열 전체를 복사
copyOfRange() : 배열의 특정 부분을 복사
fill() : 배열의 모든 요소를 지정된 값으로 채운다.
setAll() : 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 잡는다.
asList() : 배열을 List로 변환
Comparator와 Comparable
- Comparable : 기본 정렬기준을 구현하는 데 사용
- Comparator : 기본 정렬 기준 이외에 다른 기준으로 정렬하고자 할 때 사용
HashSet
저장 순서를 유지하지 않으며, 중복을 허용하지 않는다.
add시 이미 같은 객체가 있으면 저장이 실패되고 false를 반환한다.
LinkedHashSet을 사용하면 저장순서를 유지할 수 있다.
TreeSet
이진 검색 트리의 자료구조이지만
Set 인터페이스를 구현하였으므로 역시 중복을 허용하지 않으며 정렬된 위치에 저장한다.
ceiling(Object o) : 지정된 객체와 같은 객체를 반환
clear() : 저장된 객체를 모두 삭제
clone() : TreeSet을 복제하여 반환
comparator() : TreeSet을 정렬기준을 반환한다.
contains() : 지정된 객체가 포함되어있는지 확인한다.
floor(Object o ) : o와 동일한 객체가 있는지 반환
higher(Object o) : 지정된 객체보다 큰 값을 가진 객체 중 제일 가까운 값의 객체를 반환
retainAll(Object o) : 지정된 객체를 제외하고 삭제한다.
Properties
HashMap의 구버전인 Hashtable을 상속받아 구현
키와 값을 Object의 형태로 저장하는 것과 별개로 (String, String)의 형태로 저장한다.
'Langauge > Java' 카테고리의 다른 글
자바의 정석 Chapter13. 쓰레드(Thread) (0) | 2022.05.03 |
---|---|
자바의 정석 Chapter12. 지네릭스, 열거형, 애너테이션 (0) | 2022.04.05 |
Java의 정석 Chapter9. java.lang 패키지와 유용한 클래스 (0) | 2022.03.21 |
Java의 정석 Chapter8. 예외처리(Exception Handling) (0) | 2022.03.21 |
Java InputStream에서 File 객체로 변환하기 (0) | 2022.03.21 |