728x90
반응형

언어 공부 13

[JAVA / 자바] 람다 표현식 Lambda Expression

람다 표현식이 등장하게 된 배경초기 Java에서는 함수형 프로그래밍(Functional Programming)을 이용하여 코드를 작성하기 매우 척박한 환경이었습니다. 함수/메서드를 파라미터로 전달하기 위해서는 익명 클래스(Anonymous Class)를 사용하는 등의 방법을 사용해야만 했고 이에 따라서 코드가 길어짐과 더불어 가독성은 함수형 프로그래밍을 하기 위해 타협해야 하는 상황이 벌어졌습니다. 따라서, Java에서는 이와 같은 단점을 보완하기 위해 Java 8부터 람다 표현식이라는 새로운 패러다임을 도입함으로써 문제를 해결하였습니다. 람다 표현식 사용 방법람다 표현식의 대표적인 형태는 다음과 같습니다.(변수타입 변수명) -> { return 반환값; }일반적인 함수/메서드의 형태와 달리 람다 표현식..

[JAVA / 자바] 함수형 프로그래밍

함수란,어떠한 input(입력)을 받아서 output(출력)을 하는 것이라고 쉽게 표현해 볼 수 있다. 따라서 함수는 동사와 같은 역할을 하기 때문에 함수의 이름을 정할 때에도 동사의 형태로 네이밍 하는 것을 알 수 있다. 반면에 객체는,어떠한 것에 대한 상태 및 관련된 동작에 대한 것을 표현한 것이다. 따라서, 객체의 이름을 정할 때는 명사 형태로 네이밍을 한다는 것을 확인해 볼 수 있을 것이다. 함수와 객체에 대한 차이를 서두에서 다룬 이유는 바로 우리가 흔히 알고 있는 객체지향 프로그래밍(OOP, Objected Oriented Programming)과의 비교를 통해서 함수형 프로그래밍(Functional Programming)을 설명하기 위해서이다. 객체지향 프로그래밍(이후 OOP)에서는 명령형 ..

[JAVA / 자바] Queue(큐) 클래스 사용법 및 함수(Method) 정리

Queue : 선입 선출(FIFO: First In First Out)의 성격을 지닌 자료구조 [자료구조] 큐(Queue)에 대한 설명글 [자료구조] 큐(Queue) 큐 (Queue) - 스택과 마찬가지로 삽입과 삭제의 위치가 제한된 유한 순서 리스트 - 선입선출 구조(FIFO, First-In-First-Out) : 삽입 순으로 나열되어 가장 먼저 삽입한 원소가 가장 먼저 삭제된다. 삭제 kwin0825.tistory.com 선언 import java.util.Queue; import java.util.LinkedList; Queue 변수명 = new LinkedList(); ㄴ 위 같은 경우는 자료형에 넣은 자료형만 삽입, 삭제 가능 Queue 변수명 = new LinkedList(); ㄴ 위 같은 ..

[JAVA / 자바] Stack(스택) 클래스 사용법 및 함수(Method) 정리

Stack : 후입 선출(LIFO: Last In First Out)의 성격을 지닌 자료구조이다. [자료구조] 스택 (Stack)에 대한 설명글 [자료구조] 스택 (Stack) 스택(stack) - 스택에 저장된 원소는 top으로 정한 곳만 접근이 가능하다. ㄴ 후입 선출 구조(LIFO, Last-In-First-Out) : 마지막에 삽입한 원소는 맨 위에 쌓여 있다가 가장 먼저 삭제된다. 스택의 연산 kwin0825.tistory.com 선언 import java.util.Stack; Stack 변수명 = new Stack(); ㄴ 위 같은 경우는 자료형에 넣은 자료형만 삽입, 삭제 가능 Stack 변수명 = new Stack(); ㄴ 위 같은 경우는 어떤 자료형이든 삽입, 삭제 가능(이전에 int형을..

[JAVA / 자바] TreeSet 클래스 사용법

TreeSet : Set자료형의 특징으로 중복을 허용하지 않으며, 정렬을 지원하는 클래스이다. : *레드-블랙 트리(Red-Black Tree)로 구현되어 있다. * 레드-블랙 트리(Red-Black Tree) : 편향 이진트리의 단점을 보완하기 위한 트리로, 데이터의 삽입/삭제 시 좌우 균형을 맞춰주는 트리 선언 import java.util.TreeSet; import java.util.Collections; // TreeSet 변수명 = new TreeSet (); 정렬 1. 오름차순 TreeSet 변수명 = new TreeSet(); 2. 내림차순 TreeSet 변수명 = new TreeSet(Collections.reverseOrder()); 3. 사용자 정의 TreeSet 변수명 = new T..

[JAVA / 자바] 비트 마스킹(Bit Mask), BitSet자료형

비트 마스킹 / 비트 마스크 (BitMasking / BitMask) : 정수의 이진수 표현을 사용하는 기법 장점 1. 연산 시간이 빠름 - 비트 마스킹은 bit연산이므로 거의 모든 연산이 O(1)의 시간 복잡도를 갖고 있다. 따라서 다른 연산자를 이용한 연산보다 연산 시간이 빠르다. 2. 코드가 짧음 - 다양한 집합 연산을 비트 연산자를 이용하여 한 줄로 작성이 가능하다. 3. 메모리 사용량이 적다 - 데이터를 미리 계산하여 저장 가능하고, boolean 자료형의 경우 1byte(= 8bit)의 메모리가 필요한 반면, 비트로 저장하면 1bit만 사용한다. => 동적 계산법 (DP : Dynamic Programming)에 유리 비트 연산자 비트 연산자 논리 의미 & AND 양쪽 비트가 모두 1인 경우에..

[JAVA / 자바] Priority Queue(우선순위 큐) 클래스 사용법 및 함수(Method) 정리

Priority Queue : 삽입되는 순서와 관계없이 큐에 저장된 원소들 중 우선순위가 높은 순으로 삭제되는 자료구조 [자료구조] 큐(Queue)에 대한 설명 글 [자료구조] 큐(Queue) 큐 (Queue) - 스택과 마찬가지로 삽입과 삭제의 위치가 제한된 유한 순서 리스트 - 선입선출 구조(FIFO, First-In-First-Out) : 삽입 순으로 나열되어 가장 먼저 삽입한 원소가 가장 먼저 삭제된다. 삭제 kwin0825.tistory.com 선언 import java.util.PriorityQueue; import java.util.Collections; // 정렬에 필요한 경우 PriorityQueue 변수명 = new PriorityQueue(); ㄴ 에 넣은 자료형만 삽입, 삭제 가능 ..

[JAVA / 자바] ArrayList vs HashSet

이번 포스팅은 ArrayList와 HashSet을 어떤 상황에 사용하면 좋을 지에 대해 말해보려 한다. 이전에 성능과 상관없이 코드를 작성할 때는 굳이 HashSet은 사용하지 않았다. 왜냐면 정렬도 되지 않고 순서를 보장해주지 않기 때문이다. 그러나, 알고리즘 문제를 풀면서 HashSet을 다시 보게 되었고 그래서 두 자료형에 대해 장단점을 비교하여 어떤 상황에서 어떤 선택이 좋은 선택이 될지 알아보겠다. 성질 List는 중복을 허용, 순서를 보장 Set은 중복을 허용하지 않음, 순서를 보장하지 않음 위 성질을 바탕으로 우린 다음 두 가지를 비교해 볼 수 있다. 1. 중복의 허용 2. 순서의 보장 그렇다면 순서가 상관없으면서 중복 없이 저장하고 싶을 때만 Set자료형을 사용해주면 되는 것이 아닌가?라고..

[JAVA / 자바] 자바 제어문

조건문 - if 명령문 : 조건식을 검사하여 그 결괏값이 참(true)이면 명령문 수행, 거짓(false)이면 명령문을 수행하지 않고 건너뜀 if(조건식){ 명령문; ... } else if(조건식){ 명령문; ... } else{ 명령문; ... } - switch 명령문 : if-else 구조를 여러 번 반복하는 다중 조건문, 식을 계산하여 구한 값과 일치하는 case문을 찾아서 해당 명령문을 수행하고, break 명령을 만나면 switch 명령문을 빠져나감(break 명령을 만날 때까지 하위 케이스 명령문도 수행함) switch(식) { case 값: 명령문; break; case 값: 명령문; case 값: 명령문; break; default: 명령문; } 반복문 : 같은 명령문을 여러 번 반복 ..

[JAVA / 자바] 자바의 데이터 타입

변수 (Variable) - 어떤 값을 저장하는 공간 - 사용할 변수 선언(변수에 저장할 값의 타입, 즉 데이터 타입을 함께 선언) 기본 타입(primitive type) : 키워드로 정의된 8개의 기본 데이터 타입 - 정의된 형태의 값을 변수에 저장하기 위한 데이터 타입(문자 데이터 저장 시 유니코드 값 사용) - 데이터 타입을 사용하여 변수를 선언하면, 해당 타입에 따라 정해진 메모리 크기가 변수에 할당 구분 기본 타입 메모리 크기 (byte: 바이트) 정수타입 byte 1 short 2 int 4 long 8 char 2 부동 소수점 타입 float 4 double 8 불리언 타입 boolean - 참조 타입(reference type) - 참조값(reference value)을 다루기 위한 데이터..

728x90
반응형