(CH10) 3.3 Instant ~ (Ch11) 1.2 ArrayList

Instant

Instant는 EPOCH TIME(1970-01-01 00:00:00 UTC)부터 경과된 시간을 나노초 단위로 표기한다. 단일 진법을 사용하기 때문에 연산에 유리하다는 장점을 가지고 있다. UTC를 기준으로 잡기 때문에 LocalTime과 차이가 있을 수 있다. 시간대를 고려해야하는 경우 OffsetDateTime을 사용하는 것이 더 나은 선택일 수 있다.

LocalDateTime과 ZoneDateTime

LocalDateTime은 LocalDate와 LocalTime을 합쳐놓은 것이고, LocalDateTimedp time zone(시간대)를 추가한 것이 ZoneDateTime이다. ZoneDateTime은 ZondID라는 클래스를 사용해 일광 절약시간(DST)를 자동으로 처리한다.

TemporalAdjusters

이번달의 3번째 목요일은 며칠인지, 지난주 금요일은 며칠인지와 같은 날짜를 다룰 때 자주 사용하는 표현에 대한 계산을 해주는 메소드를 정의해놓은 것이 TemporalAdjusters클래스이다. TemporalAdjusters클래스에 정의된 메소드로 충분하지만 필요에 따라 날짜계산 메소드를 만들 수도 있다.

파싱과 포맷

날짜와 시간을 원하는 형식으로 출력하고 해석(파싱)하고 싶을 땐 어떻게 해야 할까? 형식화와 관련된 클래스는 java.time.format패키지에 포함되어 있는데, 이 중 DateTimeFormatter를 주로 사용한다.

컬렉션 프레임워크(Collection Framework)

컬렉션 프레임워크란 데이터 군을 저장하는 클래스들을 표준화한 설계를 말한다. 다수의 데이터를 포함한 데이터 그룹을 표준화된 방식으로 다루기 위한 설계인 것이다. JDK1.2 이전까지는 Vector, Hashtable, Properties 등의 클래스를 이용하여 각자 다른 방식으로 다루어야 했으나, 컬렉션 프레임워크의 등장으로 표준화 되었다.

컬렉션 프레임워크의 핵심 인터페이스

컬렉션 데이터 그룹을 크게 3가지 타입으로 나누어 공통의 기능을 3개의 인터페이스로 나누어 정의하였다. 각각의 타입은 List, Set, Map이며 List와 Set은 공통부분이 많다고 판단되어 후에 Colleciton 인터페이스로 묶이게 되었다.

List 인터페이스 : 순서가 있는 데이터의 집합. 데이터 중복을 허용.
Set 인터페이스 : 순서가 없는 데이터의 집합. 데이터의 중복을 허용하지 않는다.
Map 인터페이스 : key-value로 이루어진 데이터의 집합. 순서가 없고, key는 중복 허용, value는 허용하지 않는다.

ArrayList

ArrayList는 List인터페이스를 구현한 것으로, 기존의 Vector를 개선한 형태이다. 데이터는 ArrayList 순차적으로 저장되며, 저장 공간이 부족한 경우 새로운 배열을 생성하여 기존의 내용을 복사한 다음 새로운 배열에 값을 저장한다. 새로운 배열을 생성하고 복사하는 과정은 효율이 떨어지는 작업이기 때문에 초기 배열의 크기를 적절히 설정하는 것이 중요하다.

Reference

Java의 정석
남궁성의 정석코딩

profile
개발자 지망생입니다.

0개의 댓글