배열을 출력하기 위해 바로 배열의 이름을 입력하거나 배열 자체의 메서드 toString()을 사용하려고 하면 원하던 내용이 아닌 배열의 주소 값이 출력된다. 이럴 때 사용하는 메서드가 Arrays.toString()이다. 예는 다음과 같다. public class Main { public static void main(String[] args) { int[] arr = {2, 4, 6, 8, 10}; System.out.println(arr); // 주소값 [I@129a8472 가 출력된다 System.out.println(arr.toString()); // 주소값 [I@129a8472 가 출력된다 System.out.println(Arrays.toString(arr)); // [2, 4, 6, 8, 1..
지난 번 글에서 재귀함수의 정의와 구현방법에 대해 알아보았다. https://gnidinger-coding.tistory.com/37 [Java]재귀 함수(Recursive Functions) 출처: https://www.geeksforgeeks.org/recursive-functions/ Recursive Functions - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer.. gnidinger-coding.tistory.com 이 글을 바탕으로 이번 글에선 여러가지 적용 예를 들어본다. sayHello 이름 그대로 문자열 "Hello"를 n..
재귀 함수는 위 그림처럼 정의 단계에서 자기 자신을 다시 호출하는 함수를 말한다. 수학으로 봤을 땐 점화식이라고 생각하면 편하다. f(n) = f(n - 1) + n // 점화식 재귀 함수를 활용하면 반복적인 작업을 해야 하는 문제를 간결하게 풀 수 있는 경우가 있다. 반면 코드에 대한 직관적인 이해가 어렵고, 메모리를 많이 사용하게 된다는 단점도 존재한다. 재귀 함수에 익숙해지기 위해선 문제를 작게 쪼개는 연습을 하는 게 중요한데, 가장 간단한 예 중 하나인 팩토리얼로 예를 들어보자. 먼저 팩토리얼은 다음과 같이 계산한다. n! = n * (n - 1) * (n - 2) * ... * 2 * 1 0! = 1 1부터 n까지의 모든 자연수를 곱하는 계산이라고 생각하면 된다. 먼저 이 계산을 반복문을 통해 ..
스레드(Thread) 컴퓨터에서 동작하고 있는 프로그램을 프로세스(Process)라 부른다. 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원과 스레드로 구성된다. 스레드(Thread)란 그 프로세스 내에서 실제로 작업을 수행하는 주체를 말하는데, 당연하게도 모든 프로세스에는 기본적으로 하나 이상의 스레드가 존재한다. 참고로 스레드를 직역하면 실, 줄거리, 맥락 등의 단어가 되며 프로그램 내에서 실행되는 프로그램 제어 흐름이라는 느낌으로 받아들이면 편하다. 또한 하나의 스레드를 가지는 프로그램을 싱글 스레드 프로그램이라고 부르며 두 개 이상의 스레드를 가지는 프로그램을 멀티 스레드 프로그램이라 부른다. 멀티 스레딩은 하나의 프로그램 안에서 여러 작업을 동시에 수행하는 데 있어서 핵심적인 역할을 수..
지난번 글에서 스트림은 크게 세 가지 과정으로 나뉜다고 했다. 스트림 생성하기 중간 연산 - 데이터의 가공 최종 연산 - 결과 만들기 또한 스트림을 사용할 때 주의해야 할 점도 있었는데, 스트림은 데이터 소스로부터 데이터를 읽기만 할 뿐 변경하지 않는다(Read-only) 스트림은 일회용으로, 사용시마다 새로 생성해야 한다. 가 그것이다. 이 글에선 위의 세 가지 과정 중심으로 스트림에 대해 알아본다. 스트림 생성 스트림은 주로 컬렉션과 배열을 이용해 얻는다. 그중에서도 컬렉션에는 아예 stream()이 정의되어 있기 때문에, 간단하게 스트림을 얻을 수 있다. // List로부터 스트림을 생성 List list = Arrays.asList("a", "b", "c"); Stream listStream = ..
스트림(Stream)은 부터 지원하기 시작한 기능이다. 람다를 이용해 배열과 컬렉션의 요소들을 순회하며 처리할 수 있는 반복자라고 보면 된다. 스트림(Stream)은 또한 '흐름'이라는 뜻을 가지고 있는데, 자바에서는 '데이터의 흐름'이라고 생각하면 편하다. 배열, 컬렉션에서 데이터의 흐름(스트림)을 생성해 원하는 대로 필터링하고 가공해서 결과를 얻는 로직이라는 뜻이다. 이 과정에서 람다가 사용되어 코드의 길이를 줄이게 된다. 스트림은 크게 세 가지 과정으로 나뉘는데, 스트림 생성하기 중간 연산 - 데이터의 가공 최종 연산 - 결과 만들기 가 그것이다. 과정에 들어가기에 앞서, 스트림의 특징에 대해 조금 더 알아보자. 스트림의 특징 선언형 프로그래밍 스트림의 가장 큰 특징은 데이터를 선언형으로 처리한다는..
람다 표현식(Lambda Expression) 혹은 줄여서 람다식은 함수형 프로그래밍 기법을 지원하는 자바의 문법요소이다. 간단하게 말해서 메서드를 하나의 식으로 표현한 것이라고 할 수도 있는데, 메서드를 람다식으로 표현하면 클래스와 객체를 생성하지 않고도 메서드를 사용할 수 있다. 따라서 람다 함수는 익명 함수와 동의어이며, 더 정확하게는 익명 객체라 볼 수 있다. 또한 이 익명 객체를 사용하기 위해 뒤에 살펴볼 함수형 인터페이스(Functional Interface)가 만들어지게 되었다. 람다식의 기본 문법 람다식의 가장 큰 장점은 코드의 직관성과 간결성이다. //기존 메서드 표현 방식 void sayhello() { System.out.println("HELLO!") } //위의 코드를 람다식으로 ..
열거형(enum) 열거형(enum)은 Enumerated Type에서 왔다. 말 그대로 열거형. 열거형은 변하지 않는 한정된(연관된) 상수 데이터를 다루는 데 최적화된 타입이다. 이나 처럼 말이다. enum 타입을 정의하는 방법은 간단하다. enum Seasons { SPRING, SUMMER, FALL, WINTER } enum Frameworks { DJANGO, SPRING, NEST, EXPRESS } 자바에서 상수는 관례적으로 대문자로 표기하도록 되어 있고, 배열의 경우와 비슷하게 자동으로 0부터 시작하는 정수값이 할당된다. enum Seasons { SPRING, //정수값 0 할당 SUMMER, //정수값 1 할당 FALL, //정수값 2 할당 WINTER //정수값 3 할당 } 또한 열거형..
Map Map 인터페이스는 Collection 인터페이스와는 다른 저장방식을 가진다. 키(key)와 값(value)을 하나의 쌍으로 저장하는 방식(key-value 방식)이 그것인데, 여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 한다고 할 수 있다. 여기서 중요한 사실은 키는 중복저장될 수 없지만 값은 중복저장이 가능하다는 점이다. 만약 기존의 키와 같은 키에 다른 값을 저장하면, 값이 대체되는 효과가 발생한다. Map 인터페이스를 구현한 클래스는 HashMap, HashTable, TreeMap, SortedMap등이 있고, 공통으로 사용할 수 있는 메서드는 다음과 같다. HashMap HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스이다. Hash..
Set Set 인터페이스를 구현할 앞으로의 모든 Set 컬렉션 클래스는 다음과 같은 공통점을 갖는다. 데이터의 순서가 유지되지 않는다. 데이터의 중복 저장을 허용하지 않는다. Set 컬렉션에 속하는 클래스는 다음과 같다. HashSet TreeSet 또한, 위 클래스에서 공통으로 사용할 수 있는 메서드는 다음과 같다. 추가로, 앞서 살펴보았던 List 클래스와 마찬가지로 컬렉션 인터페이스의 메서드를 상속받아 사용한다. HashSet HashSet 클래스는 Set 클래스 중에 가장 많이 사용되는 클래스이다. Set 인터페이스를 물려받아 데이터의 순서가 유지되지 않고, 중복 저장을 허용하지 않는다. 해시 알고리즘(Hash Algorithm)을 사용하여 검색 속도가 매우 빠르다는 장점이 있으며, 내부적으로는 ..
- Total
- Today
- Yesterday
- 유럽여행
- 스트림
- 파이썬
- RX100M5
- 알고리즘
- 맛집
- 세모
- a6000
- java
- 중남미
- 리스트
- 남미
- spring
- 세계일주
- Python
- 동적계획법
- 여행
- 자바
- 백준
- 지지
- 세계여행
- 유럽
- 스프링
- 칼이사
- 면접 준비
- 기술면접
- 야경
- BOJ
- Backjoon
- Algorithm
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |