Programing Language 24

JAVA Stream API -1 (기본 사용법)

JAVA Stream : 데이터를 담고 있는 저장소가 아닌 데이터를 처리하는 과정 데이터를 오직 한번씩 처리한다. 병렬처리게 가능하며 중간 단계를 Lazy하게 처리한다. Collection 객체의 Stream 메서드를 통해 생성이 가능하다. 중계 오퍼레이션 Stream을 리턴한다. Stateless / Stateful 오퍼레이션으로 더 상세하게 구분할 수도 있다. (대부분은 Stateless지만 distinct나 sorted 처럼 이전 이전 소스 데이터를 참조해야 하는 오퍼레이션은 Stateful 오퍼레이션이다.) filter, map, limit, skip, sorted, ... 종료 오퍼레이션 Stream을 리턴하지 않는다. collect, allMatch, count, forEach, min, ma..

Effective Final과 lambda expression의 Scope

Effective Final : 메서드 안에 정의 된 필드 값으로 Final이 선언되지 않았지만 사실상 변수를 변경하는 부분이 없는 변수 예제 public static void main(String[] args) { } public void run() { int num = 10; //effective Final //로컬 클래스 class local { void print() { int num=11; System.out.println("hi"); } } //익명 클래스 Consumer anomy = new Consumer() { @Override public void accept(Integer t) { int num=11; System.out.println("hi"); } }; //람다식 Consumer ..

JAVA 기본 함수형 인터페이스 정리

자바가 기본적으로 제공해주는 인터페이스 입출력 값의 유무, 사용기능등에 따라서 다양한 함수형 인터페이스들을 사용 할 수 있다. 기본적인 구현 import java.util.function.Function; public class Plus implements Function{ @Override public Integer apply(Integer t) { return t+1; } } 함수형 인터페이스를 사용 할 시 본래는 클래스를 함수형 인터페이스를 구현하는 형식으로 사용한다. 위의 예제는 Function이라는 기본제공 함수형 인터페이스를 사용하여 Plus라는 클래스를 생성하는 예제이다. 이는 메서드가 한개인 함수형 인터페이스이므로 람다식을 써서 구현 할 수 있다. 람다식을 통해 구현 할 시 클래스 파일을 ..

함수형 인터페이스와 람다 표현식

함수형 인터페이스 package prac; @FunctionalInterface public interface AnyInterface { int method1(int a); static void print() { System.out.println("hi"); } default void print2() { System.out.println("hi2"); } } 함수형 인터페이스는 추상 메서드를 1개 가진 인터페이스로 정의 된다. 추상 메서드는 1개이며 Static 메서드 Defalt 메서드 등 다른 한정자 메서드들은 상관 없다. 추상 메서드가 2개 이상이면 @FunctionalInterface 어노테이션에 의해서 컴파일 오류가 발견된다. 함수형 인터페이스는 익명 내부 클래스를 구현하여 사용한다. 익명 내부..