Java - Collection - Queue, Deque
Queue는 우리가 일상에서 흔히 보는 "대기열"이라고 생각하시면 됩니다. 줄이 있으면 보통 맨 뒤에 줄을 서고 가장 먼저 온 사람이 먼저 줄에서 나가게 되죠. 일상 생활에서 가장 많은 형태의 자료구조이며, 이런 행동 패턴을 "먼저 온 사람이 먼...
Queue는 우리가 일상에서 흔히 보는 "대기열"이라고 생각하시면 됩니다. 줄이 있으면 보통 맨 뒤에 줄을 서고 가장 먼저 온 사람이 먼저 줄에서 나가게 되죠. 일상 생활에서 가장 많은 형태의 자료구조이며, 이런 행동 패턴을 "먼저 온 사람이 먼...
Java - Iterable Java에서 for-each loop 혹은 forEach method를 사용하려면, 자료 구조의 요소들을 순회(Iterate)해야 합니다. 순차적으로 원소에 접근하는 것이 가능할 경우, "for-each loop이 사...
Java는 OOP, 객체지향 언어입니다. OOP 자체가 꽤나 올드한 패러다임이기는 하고 저도 오랫동안 "그거 옛날 패러다임이잖아?"라면서 무시했던 일들도 있는데, 장난감 레벨에서 뭔가를 만드는 것이 아니라, 거대한 시스템을 만들어야 하는 상황에서...
는 우리가 흔히 아는 '집합'을 말하는 것이죠. 이 자료 구조 내부에는 중복값이 존재할 수 없습니다. 가령 Array, List등에서는 1을 원소로 넣고, 또 넣을 수 있는 반면, Set에서는 이게 안되요. 그럼 List가 더 좋은 것 아니냐? ...
Java를 포함한 OOP 언어들에서는 BaseClass(혹은 Interface)의 reference Variable을 사용해서 DerivedClass의 Class Instance를 가리키게 할 수 있습니다. 대략 다음과 같죠. "왜 이런짓을 해야...
Class 안에 InnerClass를 만들었습니다. 그리고 InnerClass의 method인 에서 OuterClass의 field인 과 InnerClass의 field인 을 모두 출력하죠. OuterClass의 field인 이 private이지...
python에서 필요에 따라 anonymous function을 정의해서 임시적으로 사용하는 것처럼, Java에서도 Anonymous Class 혹은 Anonymous Interface를 재정의해서 사용할 수 있습니다. 필요에 따라, 특정 met...
Inner Class(내부 클래스)는 클래스 안에 클래스가 또 있는 겁니다. 클래스 안에 Object(Class Instance)가 있는게 아니라, Class 안에서 새로운 Class를 정의하는 것을 말합니다. 대략 다음과 같은 형태로 정의하는 ...
List Interface 밑에는 와 가 있습니다. 이 둘에 대한 설명은 굳이 하지 않겠습니다. 이 둘은 기본적으로 mutable입니다. 그리고 를 사용해서 List를 생성하는 경우 immutableList가 생성됩니다.
Java에서는 미리 다양한 자료구조에 대한 Interface를 설계 해두었습니다. 관리의 용이성 혹은 method명을 표준화시켜 관리하는 것이 목적이겠죠. : 동일한 type의 object들을 모아두는 container입니다. , , , , 는 ...
Java에서 Collection을 사용하다 보변 다음과 같은 Warning 메세지가 뜰 때가 있습니다. 뒤쪽의 를 지워버리면 Warning이 발생하지 않죠. 물론 그대로 사용해도 문제는 없습니다만. 이 을 Diamond Operator라고 부르죠...
Java에서 기본으로 제공하는 Array의 경우 사용할 수 있는 Array의 크기가 고정되어 있죠. 그런데 실제 상황에서는 필요에 따라 Array의 크기가 추가로 더 필요할 때가 있죠. 물론, 어려운 코드는 아닙니다. 더 큰 크기의 New Arr...
프로그래밍할 때, 타입을 고정하지 않고 Class를 추상화하여 표현할 수 있죠. 이게 불가능하다면 알고리즘의 작동방식이 동일하더라도 Integer, String등 각각의 데이터 타입에 따라서 여러 Class를 정의해두어야 합니다. 단지 데이터 타...
Java Virtual Machine(JVM) JVM은 컴파일된 자바 프로그램을 실행하는 가상환경을 말합니다. JVM은 컴퓨터의 OS위에서 돌아가고, Java Program은 JVM 위에서 돌아가죠. JVM은 여러 종류가 있고 대부분 JVM Sp...
Generic Programming은 변수의 타입과 상관없이 프로그래밍할 수 있도록 하는 것을 말합니다. 아주 간단하게 '정렬'을 예로 들자면, 변수타입이 Int이든, Double이든, String이든 간에, 비교 연산자만 제대로 설정되어 있다면...
C나 C++에서는 직접 를 통해 메모리를 직접 해제해야 하지만, JVM에서는 Garbage Collector가 직접 알아서 메모리를 해제해줍니다. Java에서는 JVM의 heap memory에 에 의해 생성되는 Object를 올려서 관리합니다. ...