Java
-
[Java] Optional이란?Java 2022. 2. 11. 00:01
Optional이란? Java 8에서 최초로 도입되었습니다. 'T' 타입의 객체를 포장해 주는 래퍼 클래스로 모든 타입의 참조 변수를 저장할 수 있습니다. Optional은 "값이 존재할 수도 있지만 안 할 수도 있는 객체" 즉, "null이 될 수도 있는 객체"를 포장해주는 래퍼클래스입니다. public final classOptional{ private final T value; } 래퍼 클래스란? 만약 메서드가 매개변수를 객체 형태로 받을 경우 기본 타입을 객체화하여 매개변수로 전달할 때 사용하는 클래스로 자세한 부분은 아래 링크를 참조하시면 좋을 것 같습니다. https://junuuu.tistory.com/68 [Java] 래퍼 클래스(Wrapper Class)란? Optional에 대해 알아보..
-
[Java] 스트림의 최종연산Java 2022. 2. 10. 00:01
이전 시간에 스트림의 중간 연산에 대해 알아보았습니다. https://junuuu.tistory.com/88?category=968252 스트림은 아래와 같은 주기를 가집니다. 1. 스트림 생성 2. 중간 연산 (0~ n번) 3. 최종 연산 (0~1번) 오늘은 스트림의 최종 연산에 대해 알아보겠습니다. 최종 연산에는 스트림의 요소를 소요하며 스트림이 닫히기 때문에 한 번만 연산할 수 있습니다. 중간 연산은 Stream을 반환하는 반면에 최종 연산은 int, boolean, Optional 등을 반환합니다. 최종 연산에는 어떤것들이 있는지 보겠습니다. forEach(), forEachOrdered() void forEach(Consumer
-
[Java] 스트림의 중간연산Java 2022. 2. 9. 00:01
이전 시간에 스트림의 생성에 대해서 알아보았습니다 https://junuuu.tistory.com/78?category=968252 스트림은 아래와 같은 주기를 가집니다. 1. 스트림 생성 2. 중간 연산 (0~ n번) 3. 최종 연산 (0~1번) 오늘은 중간 연산에 대해 알아보겠습니다 스트림 자르기 Stream skip(long n) Stream limit(long maxSize) IntStream intStream = intStream.rangeClosed(1, 10) ; // 1~10의 요소를 가진 스트림 생성 intStream.skip(3).limit(5).forEach(System.out::print); //45678 skip() 과 limit() 은 스트림의 일부를 잘라낼 때 사용합니다. sk..
-
[Java] Math.max() vs 삼항연산자Java 2022. 2. 7. 00:01
두 숫자를 비교하기 위해 Math.max() 메서드를 사용하거나, 삼항 연산자를 사용하거나, if-else문을 사용합니다. 이중에 if-else는 코드가 길어지기 때문에 제외하고 삼항연산자와 Math.max() 메서드 중 어떤 것이 더 빠를까(효율적일까) 궁금점이 생겨서 알아보게 되었습니다. 우선 내부적으로 Math.max() 메서드가 어떻게 이루어지는지 살펴보겠습니다 public static int max(int a, int b) { return (a >= b) ? a : b; } 내부적으로 삼항연산자를 사용하여 return 합니다. 따라서 실행을 테스트해보기 전에도 삼항 연산자가 조금 더 빠를 것 같다고 예상해 볼 수 있습니다. 실제로 Math.max() 메서드와 삼항연잔자를 20억 번 테스트해보겠습..
-
[Java] Comparator와 Comparable란?Java 2022. 2. 3. 00:01
Arrays.sort()를 호출하면 컴퓨터가 알아서 배열을 정렬하는 것처럼 보이지만, 사실은 Character클래스의 Comparable의 구현에 의해 정렬됩니다. Comparator와 Comprable이란? 모두 인터페이스로 컬렉션을 정렬하는데 필요한 메서드를 정의하고 있습니다. 정렬을 하는 데는 두 가지가 필요합니다. 1. 정렬 대상 2. 정렬 기준 Comparator와 Comparale은 객체 정렬에 필요한 정렬 기준을 제공하는 인터페이스입니다. 인터페이스이기 때문에 Comparable 또는 Comparator를 사용하고자 한다면 인터페이스 내에 선언된 메서드를 반드시 구현해야 합니다. 가장 중요한 것은 Comparable과 Comparator는 객체를 비교할 수 있도록 만듭니다! Comparato..
-
[Java] 스트림의 생성Java 2022. 1. 31. 00:01
이전 시간에 스트림의 특징과 등장 배경에 대해서 알아보았습니다. https://junuuu.tistory.com/78?category=968252 이제 스트림의 생성법을 알아보겠습니다 스트림은 아래와 같은 주기를 가집니다. 1. 스트림 생성 2. 중간 연산 (0~ n번) 3. 최종 연산 (0~1번) Collection 인터페이스의 stream() 메서드로 컬렉션을 스트림으로 생성할 수 있습니다. List list = Arrays.asList(1, 2 ,3 ,4 ,5); Stream intStream = list.stream(); //list를 스트림으로 변환 //스트림의 모든 요소를 출력(최종연산) intStream.forEach(System.out::print); //12345 intStream.for..
-
[Java] 스트림(Stream)이란? + 특징, 등장배경Java 2022. 1. 29. 00:01
스트림(Stream)이란? Stream이란 시냇물이라는 뜻으로 물이 흘러가듯이 데이터 소스가 가진 데이터가 흘러감을 의미합니다. 다양한 데이터 소스(컬렉션, 배열)를 표준화(통일)된 방법으로 다루기 위한 것입니다. 공식문서에서는 아래와 같이 소개하고 있습니다. Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections. 컬렉션의 맵리듀스 변환과 같은 스트림의 요소에 대하여 함수형 스타일의 연산을 지원하는 클래스입니다. 맵리듀스(map-reduce)란? 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작된 프레임워크 스트림의 등장배..
-
[Java] 싱글톤(Singleton)이란?Java 2022. 1. 27. 00:01
싱글톤(Singleton)이란? 전역 변수를 사용하지 않고 애플리케이션이 시작될 때 최초 한 번만 메모리에 할당되어 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴 즉, 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴입니다. Single이라는 단어 자체가 한 개/단일을 의미하기 때문에 "싱글톤"이라는 단어 자체로 어느 정도 객체를 하나만 생성한다고 유추할 수도 있습니다. 싱글톤을 사용하는 이유? 고정된 메모리 영역을 얻으면서 한 번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있습니다. 전역으로 사용되는 인스턴스이기 때문에 다른 클래스의 인스턴스들이 접근하여 사용할 수 있습니다. 즉, 데이터 공유가 쉽다는 것입니다. 하지만 여러 클..