목표 Stack의 특징을 익힌다. Stack의 사용법과 구현을 익힌다. 개요 Stack은 LIFO(Last In First Out)의 특징을 가지는 자료 구조이다. 즉, 맨 마지막에 들어온 값이 가장 먼저 나가는 자료 구조이다. Kotlin에서는 Stack을 사용하기 위에 JCF의 Stack을 가져와 사용한다. Stack의 상속구조는 조금 복잡해서 List 위쪽(List가 확장하는 인터페이스)은 간소하게 표현했다. 생성 Stack의 생성은 간단하다. Stack은 클래스이기 때문에, 생성자를 이용해 생성할 수 있다. val stack: Stack = Stack() 조작 Stack의 조작 방법은 간단하다. Stack 클래스에서는 총 3가지의 Stack 연산을 지원한다. Stack에서 Vector Class를..
Kotlin
목표 Queue의 특징을 익힌다. Queue 인터페이스를 구현하는 클래스(ArrayBlockingQueue)의 사용법과 특징을 익힌다. 개요 Queue란 FIFO(First In First Out)의 특징을 갖는 자료 구조이다. 즉, 먼저 들어온 값이 먼저 나가는 자료구조이다. Kotlin에서는 Queue를 구현하기 위해 JCF(Java Collection Framework)에서 제공하는 Queue Interface를 이용한다. 하지만, Queue는 단순한 인터페이스이므로, 인터페이스를 구현하는 Class를 사용해야 하는데, 우리는 우리는 그중 ArrayBlockingQueue를 사용하여 Queue를 다루어본다. 생성 Queue 인터페이스를 이용하기 위해서는 인터페이스를 구현하는 구현체를 이용해야 한다...
목표 시작 값과 끝나는 값이 있는 범위를 다루는 방법을 이해한다. Range와 Progression의 차이를 이해하고, 상황에 맞게 쓸 수 있도록 한다. *Range와 Progression에 대한 자료가 많이 없어 직접 소스코드를 분석해서 자료를 만들었습니다. 부족한 부분이 있을 수 있으니 수정해야 할 부분은 댓글로 남겨주시면 감사하겠습니다. 개요 이 장에서 Progression Class와 Range Class를 묶어 놓은 것은 Range는 Progression의 특수한 형태이기 때문이다. 둘 다 범위를 다룬다는 것은 같지만, Progression은 start와 end를 정해놓고 구간을 1이상의 정수로 바꿀 수 있는 반면 range는 구간이 1로 고정되어 있다. Progression 이란 Progres..
목표 각 Memory Area가 어떤 역할을 하는지 이해한다. JVM의 메모리 구조 JVM은 Runtime에 Data를 올려놓는 공간인 Runtime Data Area를 가지고 있다. 이 공간은 총 5가지로 나뉘는데, 뒤의 PC Register과 Native Method Stack 영역은 Low Level의 Operation을 하기 위한 메모리 공간 이므로 이 장에서는 앞의 세가지 'Method Area(Static Area)', 'Heap Area', 'Stack Area'만 다룬다. Method Area(Static Area) - 정적 영역 Heap Area - 힙 영역 Stack Area - 스택 영역 Method Area(Static Area) 개요 Method Area는 우리가 보통 정적(Sta..