자바의 기본 자료형인 int와 long은 아래와 같은 범위의 수를 저장할 수 있다. Type Range int -2,147,483,648 ~ 2,147,483,647 (약 21억) long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (약 900경) long 타입으로도 충분히 큰 수를 저장할 수 있지만, 가끔 알고리즘 문제에서 이 범위를 넘는 수의 연산이 필요해질 때가 있다. 그럴 때 사용하는 것이 범위의 제한이 없는 자료형, BigInteger다. 추가로 BigInteger는 java.math 패키지에 소속되어 있으며, 사용 시 아래와 같이 import 해주어야 한다. import java.math.BigInteger; 선언 BigInteger 자료..
이중 반복문으로 출력할 수 있는 가장 간단한 일 중 하나가 바로 구구단이다. 스트림을 이래저래 가지고 놀다 보니까 이중 반복문도 돌아보고 싶어 졌는데, 연습하는 김에 구구단을 출력해 본다. 이중 for문으로 구구단 출력 특별한 설명은 필요 없을 것 같아서 바로 코드로 간다. import java.util.ArrayList; import java.util.List; public class MultiplicationTable { public static void main(String[] args) { for(int i = 2; i < 10; i++) { List list = new ArrayList(); for (int j = 1; j < 10; j++) { list.add(i * j); } System.o..
List → Array List → String[] 문자열 리스트를 문자열 배열로 바꾸는 건 굉장히 간단하다. import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Example { public static void main(String[] args) { List list = new ArrayList(); list.add("101"); list.add("103"); list.add("107"); String[] arr = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(arr) + ", " + arr.getClass(..
map() map()은 스트림에 접근해서 사용자가 원하는 매핑을 실행해주는 메서드이다. import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Example { public static void main(String[] args) { List list = Arrays.asList(2, 3, 5, 7); List result = list.stream() .map(a -> a * 2) // 모든 요소에 곱하기 2 .collect(Collectors.toList()); System.out.println(result); } } [4, 6, 10, 14] 지정된 리스트의 각 요소에 곱하기 2를 하..
스트림을 사용하다 보면 분명히 Intstream을 사용중인데 max(), min(), average()등에서 에러가 나곤 한다. 이때 최종연산에 int 변환을 붙이거나 반환 타입을 OptionalInteger로 변환하면 해결된다. 반환타입을 double로 받고 싶을 때도 마찬가지 에러가 나는데, 이는 max(), min(), average()의 반환타입이 기본적으로 OptionalInt, OptionalDouble이기 때문이다. 설명을 읽어보면 스트림이 비어있는 경우에 비어있는 optional을 반환한다고 쓰여있다. NullPointerException을 피하기위한 장치로 보이는데, 결과부터 말하면 Optional = OptionalInt Optional = OptionalDouble 이다. 귀찮아도 원..
뭔가 검색하다 이런 것들을 봐 버렸다. 굉장해..... https://knowyourmeme.com/photos/1173139 Programming languages Gijinka | Gijinka / Moe Anthropomorphism See more 'Gijinka / Moe Anthropomorphism' images on Know Your Meme! knowyourmeme.com https://sentencedtoship.tumblr.com/post/147401402096 sentencedtoship PROGRAMMING LANGUAGES GIJINKAS PART 2: Objective-C: Smol pure innocence, owns more than 10 Apple products, bul..
스트림의 중간 연산 중 하나인 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으로 묶고 간접적으로 인스턴스를 생성 → 결합도를 낮춰 수정 및 유지보수가 편해짐 뛰어나고 직관적인 가독성으..
이전에 자료구조에 대한 글을 올리면서 트리에 대해 다룬 적이 있다. 2022.07.26 - [Development/Java] - [Java]자료구조 - Tree [Java]자료구조 - Tree Tree 자료구조 Tree(트리)는 주로 계층적인 구조를 표현하기 위해 사용한다. /Users/username 토너먼트 경기의 대진표 조직도 트리구조는 루트(Root)라는 최상위 노드에서 시작해 각 데이터를 간선(Edge, gnidinger.tistory.com 그리고 최근 우선순위 큐에 대해 다루면서 내부적으로 O(log N)의 힙(Heap)을 사용한다고 언급했었는데, 2022.09.23 - [Development/Java] - [Java]우선순위 큐(Priority Queue) 튜토리얼 [Java]우선순위 큐(..
DI는 특정 객체가 의존할 객체나 메서드를(즉, 의존관계를) 외부에서 주입받는 디자인 패턴이다. 여기서 주입이란 위 그림에서 보듯이 의존성을 사용하려는 객체에게 전달하는 것이라 받아들이면 되며, 디자인 패턴이란 공통적인 문제에 대한 재활용 가능한 솔루션이자 컨셉이라 생각하면 편하다. 또한 DI는 스프링의 핵심 원칙인 IoC(제어 역전)를 구현하는 수단 중 하나인데, DI의 목표가 객체의 설계와 사용이라는 관심사를 분리함으로써 느슨한 관계로 이루어진 앱을 만드는 것이기 때문이다. 이는 코드의 가독성과 재사용성을 크게 높여주는 효과도 가지고 있다. 그렇다면 이렇게까지 주입하려는 의존성이란 무엇일까? 간략하게 알아보자. Dependency Dependency는 의존성, 의존관계라고 번역한다. 나는 처음엔 의존..
- Total
- Today
- Yesterday
- 칼이사
- 세모
- 남미
- 여행
- Algorithm
- 스프링
- 지지
- spring
- 야경
- a6000
- 유럽
- RX100M5
- Backjoon
- BOJ
- 면접 준비
- 맛집
- 기술면접
- 알고리즘
- 유럽여행
- 백준
- 중남미
- 동적계획법
- Python
- 파이썬
- java
- 리스트
- 세계일주
- 세계여행
- 스트림
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |