본문 바로가기

Language

(21)
Java 스트림 (Stream) 사용법 및 정리 3/3 (Collectors, Grouping By ..) 목차 · Collectors · toMap · Grouping By · Partitioning By · For Each Collectors R collect(Collector
Java 스트림 (Stream) 사용법 및 정리 2/3 (Reduce, Max, Min ..) 목차 · Max/Min/Count · All Match / Any Match · Find First / Find Any · Reduce 스트림 정리 1편에서 다뤘듯이 스트림 파이프라인이 있는데 이번 글에서는 종결 처리하는 부분에 대해 다룰 것이다. Max, Min, Count Optional max(Comparator
Java 스트림 (Stream) 사용법 및 정리 1/3 (Map, Filter, FlatMap ..) 목차 · Stream이란? · Stream Pipeline · Filter · Map · Sorted · Distinct · FlatMap Stream이란? 스트림은 '데이터의 흐름'이다. 자바 8부터 추가되어 컬렉션(Collection) 형태로 구성된 데이터를 람다를 이용해 간결하고 직관적으로 처리할 수 있게 해 준다. For, while 등을 이용하던 기존 loop를 대체할 수 있다. 쉽게 병렬 처리를 할 수 있게 해 준다. 다음 예시는 문자열 데이터를 가진 Stream을 생성하고 List로 변환했다. Stream nameStream = Stream.of("Kim", "An", "Oh"); List names = nameStream.collect(Collectors.toList()); Stream P..
Java 메서드 참조란? 목차 · 메서드 참조란? · 메서드 레퍼런스의 4가지 케이스 · ClassName::staticMethodName · objectName::instanceMethodName · ClassName::instanceMethodName · ClassName::new 메서드 참조란? 람다 표현식이 단 하나의 메서드만을 호출하는 경우에 해당 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해준다. :: 오퍼레이터 사용한다. 생략이 많기 때문에 사용할 메서드의 매개변수의 타입과 리턴 타입을 미리 숙지해야 한다. 메서드 레퍼런스의 4가지 케이스 ClassName::staticMethodName : 클래스의 static method를 지정할 때 objectName::instanceMethodName : ..
Java 8 함수형 인터페이스 이해하기 목차 · 함수형 인터페이스란? · 기본 함수형 인터페이스 · Supplier · Consumer · BiConsumer · Predicate · Comparator 이전 글에서 Java 람다 표현식과 함수형 인터페이스에 대해서 다뤘었다. 함수형 인터페이스란? 함수형 인터페이스(Functional interface)는 1개의 추상 메서드를 갖고 있는 인터페이스이다. Java에서는 기본적으로 java.util.function 패키지에서 여러 함수형 인터페이스를 제공한다. 오늘은 기본적인 여러 함수형 인터페이스를 다뤄볼 것이다. 기본 함수형 인터페이스 기본적인 함수형 인터페이스에는 다음 인터페이스들이 있다. Supplier Consumer BiConsumer Predicate Comparator Supplie..
Java 람다 표현식과 Function Interface 목차 · 람다 표현식이란? · Function Interface와 람다 표현식 · BiFunction Interface · 커스텀 @FunctionalInterface 람다 표현식이란 람다 표현식이란 이름이 없는 함수 (Anonymous function)이다. Function Interface와 람다 표현식 함수형 인터페이스를 사용하는 이유는 자바의 람다식은 함수형 인터페이스로만 접근이 되기 때문이다. 람다 표현식을 살펴보기 전에 자바에서 제공하는 Function Interface를 보면 다음과 같다. Function 인터페이스는 java.util.function 패키지에 있으며, T라는 타입의 인풋을 받아 R이란 타입을 반환하는 apply 메서드를 가진다. package java.util.functio..
Java 8과 함수형 프로그래밍 목차 · 선언형 프로그래밍 · 왜 함수형 프로그래밍인가? · 1급 시민으로서 함수 함수형 프로그래밍이란 객체지향 프로그래밍과 같은 프로그래밍 패러다임중 하나이다. 먼저 함수형 프로그래밍의 기반을 이루는 개념인 선언형 프로그래밍을(declarative programming)을 알아보자. 선언형 프로그래밍 프로그램으로 시스템을 구현하는 방식은 크게 두 가지로 구분할 수 있다. 명령형 프로그래밍과 선언형 프로그래밍 명령형 프로그래밍은 작업을 '어떻게' 수행할 것인지에 집중한다. 반면 선언형 프로그래밍은 '무엇'에 집중한다. 내부 구현 방법은 라이브러리가 결정한다. 두 방법이 무슨 차이가 있는지 의문이 들 것이다. 예시를 보자 예를 들어 유저 리스트에서 나이가 가장 많은 유저를 가져오는 상황에서 명령형 프로그래..
코틀린[Kotlin]에서 Delegated properties 사용하기 위임된 프로퍼티 (Delegated properties) Kotlin은 특정 객체에 대한 프로퍼티의 set과 get 메서드의 호출을 위임할 수 있는 Delegated properties 메커니즘을 제공합니다. 이 경우 delegate 객체에는 getValue 메서드가 있어야 합니다. 변경 가능한 프로퍼티의 경우 setValue도 필요합니다. import kotlin.reflect.KProperty class Example { var p: String by Delegate() // 1 override fun toString() = "Example Class" } class Delegate() { operator fun getValue(thisRef: Any?, prop: KProperty): String ..