스트림을 사용하다 보면 분명히 Intstream을 사용중인데 max(), min(), average()등에서 에러가 나곤 한다. 이때 최종연산에 int 변환을 붙이거나 반환 타입을 OptionalInteger로 변환하면 해결된다. 반환타입을 double로 받고 싶을 때도 마찬가지 에러가 나는데, 이는 max(), min(), average()의 반환타입이 기본적으로 OptionalInt, OptionalDouble이기 때문이다. 설명을 읽어보면 스트림이 비어있는 경우에 비어있는 optional을 반환한다고 쓰여있다. NullPointerException을 피하기위한 장치로 보이는데, 결과부터 말하면 Optional = OptionalInt Optional = OptionalDouble 이다. 귀찮아도 원..
문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대..
문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열 번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 풀이 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Prob3052Stream { pub..
스트림의 중간 연산 중 하나인 concat()은 Concatenate(잇다, 연쇄시키다)에서 왔다. 단어 그대로 특정 스트림을 다른 스트림 뒤에 붙이는 연산을 하는데, 사용 방법도 굉장히 간단하다. 먼저 두 개의 스트림을 이어 붙이는 경우 아래와 같이 구현하면 된다. public class PracticeConcat { public static void main(String[] args) { List list1 = Arrays.asList(2, 3, 5, 7, 11); List list2 = Arrays.asList(13, 17, 19, 23, 29); Stream.concat(list1.stream(), list2.stream()) .forEach(System.out::println); } } 두 개의..
빌더 패턴(Builder Pattern)은 다양한 조건의 객체를 손쉽게 만들어내기 위한 디자인 패턴, 그중에서도 생성 패턴이다. 디자인 패턴이라 함은 쉽게 말해 재사용 가능한 일종의 솔루션이라는 뜻이며, 생성 패턴은 객체 생성 절차를 추상화하는 패턴이라는 뜻이다. 구체적으로 빌더 패턴은 생성자를 거치지 않고 빌더라는 내부 클래스를 통해 간접적으로 인스턴스를 생성하는 방식이다. 위키백과에는 이를 생성 과정과 표현 방법을 분리하는 패턴이라고 표현하고 있기도 하다. 이는 특히 대상 클래스가 복잡해지고 요구사항이 늘어날수록 빛을 발하게 되는데, 그 이유는 아래와 같다. 대상 클래스의 생성자를 private으로 묶고 간접적으로 인스턴스를 생성 → 결합도를 낮춰 수정 및 유지보수가 편해짐 뛰어나고 직관적인 가독성으..
지난 글까지 작성한 앱의 API 문서를 만들었다. 2022.09.14 - [개발/Spring] - [Spring]API Documentation - Spring REST Docs 2022.09.14 - [개발/Spring] - [Spring]Controller Slice Test에 Spring REST Docs 적용 2022.09.14 - [개발/Spring] - [Spring]Snippet과 Template을 이용한 API 문서화 2022.09.15 - [개발/Spring] - [Spring]AsciiDoc, Asciidoctor [Spring]AsciiDoc, Asciidoctor 아스키독(AsciiDoc)은 플레인 텍스트 마크업 언어를 사용하는 사람이 읽을 수 있는 문서 포맷이다. 플레인 텍스트(P..
지난 글까지 Spring REST Docs와 그 사용법, API 문서화를 위한 Snippet 생성을 마무리했다. 2022.09.14 - [개발/Spring] - [Spring]API Documentation - Spring REST Docs 2022.09.14 - [개발/Spring] - [Spring]Controller Slice Test에 Spring REST Docs 적용 [Spring]Controller Slice Test에 Spring REST Docs 적용 지난 글에선 Spring REST Docs와 그 기본 설정에 대해 알아보았다. 2022.09.14 - [개발/Spring] - [Spring]API Documentation - Spring REST Docs [Spring]API Docume..
지난 글에선 Spring REST Docs와 그 기본 설정에 대해 알아보았다. 2022.09.14 - [개발/Spring] - [Spring]API Documentation - Spring REST Docs [Spring]API Documentation - Spring REST Docs 지난 글까지 단위 테스트와 Mock 객체를 이용한 슬라이스 테스트를 코드에 적용했다. 2022.09.07 - [개발/Spring] - [Spring]단위 테스트(Unit Test) 2022.09.07 - [개발/Spring] - [Spring]JUnit을 이용한 비즈니.. gnidinger.tistory.com 잠깐 복습하자면 Spring REST Docs를 이용한 API 문서화는 아래와 같은 과정을 거쳐 진행된다. 계속..
지난 글에서 API 계층에 Slice Test를 진행하면서 테스트를 위해 DB 계층을 포함한 앱 전체의 로직이 실행되기 때문에 엄밀한 의미에서 Slice Test는 아니라고 언급했었다. 2022.09.08 - [개발/Spring] - [Spring]Slice Test - API Layer [Spring]Slice Test - API Layer 지난 글까지 테스트의 종류를 알아보고, 가장 작은 범위인 단위 테스트를 비즈니스 로직에 적용해 봤다. 2022.09.07 - [개발/Spring] - [Spring]단위 테스트(Unit Test) 2022.09.07 - [개발/Spring] - [Spring]JUn.. gnidinger.tistory.com 이 문제는 Mock 객체를 도입하면 해결되는데, 이번 글에..
지난 글까지 비즈니스 로직과 API 계층에 테스트를 적용했다. 2022.09.07 - [개발/Spring] - [Spring]단위 테스트(Unit Test) 2022.09.07 - [개발/Spring] - [Spring]JUnit을 이용한 비즈니스 로직 단위 테스트 2022.09.08 - [개발/Spring] - [Spring]Hamcrest를 적용한 단위 테스트 2022.09.08 - [개발/Spring] - [Spring]Slice Test - API Layer [Spring]Slice Test - API Layer 지난 글까지 테스트의 종류를 알아보고, 가장 작은 범위인 단위 테스트를 비즈니스 로직에 적용해 봤다. 2022.09.07 - [개발/Spring] - [Spring]단위 테스트(Unit ..
- Total
- Today
- Yesterday
- spring
- RX100M5
- 스트림
- 자바
- 세계여행
- 유럽여행
- 면접 준비
- BOJ
- 남미
- a6000
- Python
- 알고리즘
- 유럽
- 동적계획법
- 세모
- 스프링
- 기술면접
- 야경
- 맛집
- 백준
- 중남미
- 지지
- Algorithm
- 파이썬
- java
- 여행
- Backjoon
- 칼이사
- 세계일주
- 리스트
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |