Tree Tree는 비선형 자료구조이자 계층구조. 비선형 : 일직선으로 나타내지 못하는 방식 Tree는 나무를 거꾸로 뒤집어놓은 모습을 갖고있다. 하나의 뿌리로부터 가지가 뻗은 형태가 나무와 비슷하다고 해서 Tree구조라고 한다. Tree구조의 각 데이터를 Node 노드라고 하고 최상단 노드를 Root 루트라고 한다. 루트를 시작...
[Data Structure] 재귀
재귀함수 재귀(再歸) : 원래의 자리로 되돌아가거나 되돌아옴. 재귀는 위 이미지와 같이 계속 원 상태로 돌아오는, 거울속의 거울과도 비슷한 느낌이다. 재귀함수의 장점 여러 반복문을 사용하지 않아 코드가 간결해짐. 변수를 여러개 사용할 필요가 없음. 재귀함수의 단점 코드를 직관적으로 파악하기 어려움. 반복하여 메서드를 ...
[Java-Effective] Thread
Thread 스레드 (Thread) 스레드(Thread) : 프로세스 내에서 실행되는 소스코드의 실행 흐름 프로세스(Process) 실행중인 애플리케이션 데이터, 컴퓨터자원, 스레드로 구성 어떤 프로세스는 단 하나의 스레드를 가질 수도, 여러개의 스레드를 가질 수 도 있음 ...
[Java-Effective] Stream / Optional
Stream 스트림 (Stream) 배열, 컬렉션의 저장요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자 List, Set, Map, 배열 등 다양한 데이터 소스로부터 만들 수 있다 데이터 소스를 다루는 풍부한 메서드 제공스트림의 특징 중간연산과 최종연산을 할 수 있다 선언형으로 데이터 소스를 처리 ...
[Java-Effective] Lambda
Lambda 함수형 프로그래밍 기법을 지원하는 자바의 문법요소 메서드를 하나의 식으로 표현 코드를 간결하면서도 명확하게 표현할 수 있다는 장점 반환타입과 이름 생략 가능, 익명함수라고도 부름 실행문이 하나만 존재할 때 중괄호 생략 가능 매개변수 타...
[Java-Effective] I/O
InputStream, OutputSteam InputStream, OutputStream Java에서 입출력을 다루기 위한 InputStream, OutputStream 제공 스트림은 단방향으로만 데이터를 전송할 수 있기 때문에, 입출력을 동시에 처리하기 위해서는 각각의 스트림 필요 어떤 대상을 다루느냐에 따라 종류 나뉨 ...
[Java-Effective] Annotation
Annotaion 애너테이션 (Annotation) 다른 프로그램에게 유용한 정보를 제공하는 역할 다른 프로그램들에게는 아무 영향을 주지 않는다애너테이션 주요 역할 컴파일러에게 문법에러를 체크하도록 정보 제공 프로그램 빌드 시 코드를 자동으로 생성할 수 있도록 정보 제공 런타임 시 특정 기능을 실행하도록 정보 제공표준 애너테이션...
[Java-Effective] Enum
열거형 (Enum) 열거형(enum, enumerated type) 서로 연관된 상수들의 집합 몇 가지로 한정된 변하지 않는 데이터를 다루는데 사용 열거형 사용 이유 // 여러 상수 정의 위한 옛 방식 // 계절 public static final int SPRING = 1; public static final int ...
[Java] Generic / Collection
제네릭 (Generic) 제네릭(Generic) 타입을 구체적으로 지정라는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것 즉, 작성한 클래스 또는 메서드의 코드가 특정 데이터 타입에 얽매이지 않게 해둔 것 필요성 코드는 동일하지만 다른 타입들의 필드, 메서드, 클래스들이 필요해지면 각 타입마다의 클래스를 다시 작성해야함 제...
[Java] OOP 심화
객체지향 프로그래밍의 4개의 기둥 상속 (Inheritance) 상속 (Inheritance) 상위클래스의 멤버(필드, 메서드, 이너클래스)를 하위클래스에게 확장시키는 것 하위클래스의 멤버는 상위클래스의 멤버와 같거나 많다 코드의 재사용성 코드의 중복 제거 다형적 표현 가능 자바는 단일 상속만 가능(다중상속X) ...