JAVA - Supplier
2022. 9. 8. 17:51
JAVA/Chapter14
Supplier는 인자를 받지 않고 Type T 객체를 리턴하는 함수형 인터페이스다. public interface Supplier { /** * Gets a result. * * @return a result */ T get(); } Example 1 : Supplier "HelloWorld"라는 문자열을 리턴하는 Supplier 예제입니다. Supplier로부터 객체를 리턴받을 때는 get()을 호출하면 됩니다. import java.util.function.Supplier; public class SupplierExample1 { public static void main(String[] args) { Supplier supplier= ()-> "HelloWorld"; String result = ..
JAVA - orElse, orElseGet
2022. 9. 8. 17:45
JAVA/Chapter14
Optional 에는 orElse() 라는 메소드와 orElseGet() 이라는 메소드가 있다. 둘 다 Optional 을 통해 가져온 값이 null 일 때는 해당 값을 반환하라는 메소드다. orElse 와 orElseGet /** * Return the value if present, otherwise return {@code other}. * * @param other the value to be returned if there is no value present, may * be null * @return the value, if present, otherwise {@code other} */ public T orElse(T other) { return value != null ? value : o..
Java - 람다식에서 메서드 참조/생성자 참조 사용법
2022. 9. 1. 19:40
JAVA/Chapter14
String collect = memberList.stream().map(Member::getName).collect(Collectors.joining()); Java 8 이상에서 람다식을 사용할 때 클론 2개를 사용하는 경우가 있습니다. 이를 메서드 참조(Method Referentce) 혹은 이중 클론 연산자(::)라고 표현한다. 메서드 참조는 언제, 어떻게 사용할까 메서드 참조는 람다식에서 파라미터의 중복을 피하기 위해 사용한다. 파라미터가 중복되지 않았다면 메서드 참조 표현식은 사용 불가능하다. 인스턴스의 메서드를 참조하는 경우 package com.board.study.repository; import java.lang.reflect.Member; import java.util.Arrays; i..
Java - ::(더블콜론)
2022. 8. 30. 09:51
JAVA/Chapter14
콜론 두개 (::) 이중 콜론 연산자)의 정식 명칭은 메소드 참조 표현식(method reference expression)이며, 결론부터 말하자면 람다식에서 파라미터를 중복해서 쓰기 싫을 때 사용합니다. 말 그대로 람다 표현식(expression)에서만 사용 가능하고, 사용 방법은 [인스턴스]::[메소드명(또는 new)]으로 사용하는데, 예제를 통해 보는 것이 이해가 빠릅니다. 스태틱 메소드인 경우 인스턴스 대신 클래스 이름으로 사용할 수 있습니다. Method Reference Lambda의 마지막 입니다. 기존 람다식을 더 줄일 수 있는 Method reference에 대해서 설명합니다. 기본 형식은 아래와 같습니다. ClassName::Method ex) Person::getAge person c..
Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념 및 사용법
2022. 8. 25. 11:38
JAVA/Chapter14
Java 입출력 자바에서는 모든 I/O가 Stream(스트림)을 통해 이루어진다. Stream 스트림은 Byte형태로 테이터를 운반하는 데 사용되는 연결통로라고 생각하면 된다. 이는 자료(data)의 흐름이 물의 흐름과 같다는 의미에서 사용되었다고 한다. 다만 물이 한쪽 방향으로만 흐르는 것과 같이 스트림은 단방향 통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 또한 스트림은 먼저 보낸 데이터를 먼저 받게 되어있으며 연속적으로 데이터를 주고 받는다는 점에서 큐(queue)의 FIFO(First in First Out) 구조로 되어있다. 이때 데이터의 스트림의 근원지(시작점)을 Source, 데이터 종착점을 Sink, 연결한 것을 Stream이라고 표현 하며, Source ..
OutputStream 정의
2022. 8. 25. 11:19
JAVA/Chapter14
OutputStream 추상 클래스는 데이터가 나가는 통로의 역할을 한다. OutputStream 주요 메서드 통로로 데이터를 내보내는 기능이 필요하다. 데이터를 쓰는 기능과 관련된 메서드는 3개가 있다. OutputStream은 쓸 수 있어야 한다. /** * b를 OutputStream으로 내보낸다 */ public abstract void write(int b) throws IOException{} // ByteArrayOutputStream은 Byte Array로 내보내는 통로이다. ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); outputStream.write(1); // outputStream에는 [1]이 들어있다. out..
InputStream 정의
2022. 8. 25. 11:17
JAVA/Chapter14
InputStream JDK 11 기준 InputStream의 설명 This abstract class is the superclass of all classes representing an input stream of bytes Stream 개별 바이트나 무자열인 데이터의 원천 파일을 읽거나 쓸 때, 네트워크 소켓을 거쳐 통신할 때 쓰이는 추상적인 개념 쉽게 설명하면, '데이터가 전송되는 통로'라고 표현할 수 있다. 데이터가 네트워크를 거치건, 파일에서 넘어오건, 데이터가 오고가는 통로가 스트림인 것이다. byte 0이나 1이 8개 모이면 그것을 'byte'라고 부른다. '데이터'라고 생각하자. 종합하면 InputStream 추상 클래스는 데이터가 들어오는 통로의 역할에 관해 규정하고 있는 추상 클래스..
입출력 스트림 (InputStream, OutputStream)란?
2022. 8. 24. 11:55
JAVA/Chapter14
1. Stream 이란 프로그램은 외부에서 데이터를 읽거나 외부로 데이터를 출력하는 작업이 빈번하게 일어납니다. 이때 데이터는 어떠한 통로를 통해서 데이터가 이동되는데, 이 통로를 Stream 이라고 합니다. 자바에는 이러한 기능을 수행하기 위해 InputStream와 OutputStream이 존재하며 단일 방향으로 연속적으로 흘러갑니다. InputStream과 OutputStream은 추상 클래스이며 추상 메소드를 오버라이딩해서 다양한 역할을 수행할 수 있습니다. (예 : 파일, 네트워크, 메모리 입출력) 자바에서 기본적으로 제공하는 I/O 기능은 java.io 패키지에서 제공됩니다. InputStream은 외부에서 데이터를 읽는 역할을 수행하고, OutputStream은 외부로 데이터를 출력하는 역할..
Ch14-50_스트림의 그룹화와 분할
2022. 1. 15. 12:40
JAVA/Chapter14
Ch14-45_collect()와 Collectors
2022. 1. 15. 12:26
JAVA/Chapter14
Ch14-40_스트림의 최조연산 - forEach()
2022. 1. 15. 12:06
JAVA/Chapter14
Ch14-35_Optional<T>
2022. 1. 14. 11:13
JAVA/Chapter14
Ch14-26_스트림의 중간연산
2022. 1. 13. 23:29
JAVA/Chapter14
Ch14-23_스트림의 연산
2022. 1. 11. 22:19
JAVA/Chapter14
Ch14-17_스트림 만들기 - 컬렉션
2022. 1. 11. 18:33
JAVA/Chapter14
Ch14-15_스트림(Stream)
2022. 1. 10. 18:13
JAVA/Chapter14
Ch14-13_메서드 참조(method reference)
2022. 1. 8. 02:09
JAVA/Chapter14
Ch14-9_Predicate의 결합
2022. 1. 7. 23:53
JAVA/Chapter14
Ch14-1_람다식(Lambda Expression)
2022. 1. 6. 18:00
JAVA/Chapter14