본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

java.util.function패키지: IntUnaryOperator DoubleToIntFunction ToIntFunction<T> IntFunction<R> ObjIntConsumer<T>

기본형을 사용하는 함수형인터페이스

앞서 알아본 함수형인터페이스는 매개변수와 반환값이 모두 지네릭 타입이었다.

기본형타입을 사용하게 될떄도 Wrapper 클래스를 사용하게되는데, 이 비효율적인 처리를 기본형을 사용하는 함수형 인터페이스로 해결할 수 있다.

import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<Integer, Integer> squareFunction = num -> {
            Integer result = num * num; // Wrapper 클래스 사용
            return result;
        };

        int number = 5;
        Integer squared = squareFunction.apply(number); // Wrapper 클래스 사용
        System.out.println("Squared value: " + squared);
    }
}

 

import java.util.function.IntUnaryOperator;

public class Main {
    public static void main(String[] args) {
      //IntUnaryOperator는 기본형 int 값을 입력으로 받아들이고, int 값을 반환하는 함수형 인터페이스
        IntUnaryOperator squareFunction = num -> num * num; // 기본형 사용

        int number = 5;
        int squared = squareFunction.applyAsInt(number); // 기본형 사용
        System.out.println("Squared value: " + squared);
    }
}

https://standout.tistory.com/1433

 

하나의 추상 메서드를 갖는, 함수형 인터페이스

함수형 인터페이스 자바8부터 도입된 기능, 딱 하나의 추상 메서드를 갖는 인터페이스. 예를 들어 Runnable도 run 메서드만을 가지고있어 함수형 인터페이스. Runnable myRunnable = () -> { System.out.println("R

standout.tistory.com

https://standout.tistory.com/1393

 

Generics 지네릭스, 형변환을 생략하다

Generics 지네릭스 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일시 타입체크를 해주는 기능 타입안정성을 제공하며 형변환을 생략할 수 있어 코드가 간결해진다. import java.util

standout.tistory.com

 

 

 

https://standout.tistory.com/1438

 

java.util.function패키지: java.lang.Runnable Supplier<T> Consumer<T> Function<T, R> Predicate<T>

java.util.function패키지 일반적으로 자주쓰이는 형식의 메서드를 함수형 인터페이스로 정의해논 패키지. https://standout.tistory.com/1433 { for (int i = 0; i < 5; i++) { System.out.println("Hello from thread: " + Thread.curr

standout.tistory.com

https://standout.tistory.com/1439

 

java.util.function패키지: BiConsumer<T, U> BiPredicate<T, U> BiFunction<T, U, R>

매개변수가 두개인 함수형 인터페이스는 이름앞에 Bi란 접두사가 붙는다. 이 외 두개 이상의 매개변수를 갖는 함수형인터페이스가 필요하다면 직접 만들어 써야한다. BiConsumer `accept(T t, U u)` 메

standout.tistory.com

 https://standout.tistory.com/1440

 

java.util.function패키지: UnaryOperator<T> BinaryOperator<T>

매개변수타입과 반환타입이 모두 일치하는 함수형인터페이스로 UnaryOperator와 BinaryOperator가 있다. UnaryOperator `UnaryOperator` 인터페이스를 사용. `apply(T t)` 메서드를 구현하여 하나의 입력값을 받아

standout.tistory.com

https://standout.tistory.com/1441

 

java.util.function패키지: removeIf(Predicate<E> filter) replaceAll(UnaryOperator<E> operator) forEach(Consumer<? super T> ac

프레임워크를 더 유연하고 사용하기 쉽게, 새로운 기능을 적용할 수 있도록 하기위해 컬렉션 프레임워크에 다수의 디폴트 메서드가 추가되었다. 아래는 함수형 인터페이스를 사용하는 디폴트

standout.tistory.com

 

 

 

기본형을 사용하는 함수형 인터페이스는 여러가지가 있다.

더보기


IntUnaryOperator: int 값을 입력으로 받아서 int 값을 반환하는 함수.
LongUnaryOperator: long 값을 입력으로 받아서 long 값을 반환하는 함수.
DoubleUnaryOperator: double 값을 입력으로 받아서 double 값을 반환하는 함수.
IntConsumer: int 값을 입력으로 받아서 작업을 수행하는 함수.
LongConsumer: long 값을 입력으로 받아서 작업을 수행하는 함수.
DoubleConsumer: double 값을 입력으로 받아서 작업을 수행하는 함수.
IntSupplier: int 값을 제공하는 함수.
LongSupplier: long 값을 제공하는 함수.
DoubleSupplier: double 값을 제공하는 함수.
IntPredicate: int 값을 입력으로 받아서 불리언 값을 반환하는 함수.
LongPredicate: long 값을 입력으로 받아서 불리언 값을 반환하는 함수.
DoublePredicate: double 값을 입력으로 받아서 불리언 값을 반환하는 함수.
IntFunction<R>: int 값을 입력으로 받아서 제네릭 타입 R을 반환하는 함수.
LongFunction<R>: long 값을 입력으로 받아서 제네릭 타입 R을 반환하는 함수.
DoubleFunction<R>: double 값을 입력으로 받아서 제네릭 타입 R을 반환하는 함수.
IntToLongFunction: int 값을 입력으로 받아서 long 값을 반환하는 함수.
IntToDoubleFunction: int 값을 입력으로 받아서 double 값을 반환하는 함수.
LongToIntFunction: long 값을 입력으로 받아서 int 값을 반환하는 함수.
LongToDoubleFunction: long 값을 입력으로 받아서 double 값을 반환하는 함수.
DoubleToIntFunction: double 값을 입력으로 받아서 int 값을 반환하는 함수.
DoubleToLongFunction: double 값을 입력으로 받아서 long 값을 반환하는 함수.
ObjIntConsumer<T>: 객체와 int 값을 입력으로 받아서 작업을 수행하는 함수.
ObjLongConsumer<T>: 객체와 long 값을 입력으로 받아서 작업을 수행하는 함수.
ObjDoubleConsumer<T>: 객체와 double 값을 입력으로 받아서 작업을 수행하는 함수.

위에서 살펴본 IntUnaryOperator 제외, 추가로 몇개 더 살펴보자.

 

 

 

DoubleToIntFunction
`applyAsInt(double value)` 메서드를 호출하여  double 값을 입력으로 받아  int로 변환하는 함수형 인터페이스

import java.util.function.DoubleToIntFunction;

public class Main {
    public static void main(String[] args) {
        // DoubleToIntFunction을 이용하여 double 값을 int로 변환하는 예시
        DoubleToIntFunction converter = value -> (int) value;

        // DoubleToIntFunction에 double 값을 전달하여 변환
        int result = converter.applyAsInt(3.5);
        System.out.println("Converted value: " + result);
    }
}

[출력결과]
Converted value: 3

 

 

 

 

ToIntFunction<T>
`applyAsInt(T value)` 메서드를 호출하여 제네릭 타입 T를 입력으로 받아서 해당 객체를 정수로 변환하는 함수형 인터페이스

import java.util.function.ToIntFunction;

public class Main {
    public static void main(String[] args) {
        // ToIntFunction을 이용하여 문자열의 길이를 반환하는 예시
        ToIntFunction<String> lengthCalculator = str -> str.length();

        // ToIntFunction에 문자열을 전달하여 길이를 계산
        int length = lengthCalculator.applyAsInt("Hello");
        System.out.println("Length of the string: " + length);
    }
}

[출력결과]
Length of the string: 5

 

 

 

 

IntFunction<R>
`apply(int value)` 메서드를 호출하여 int 값을 입력으로 받아서 해당 값을 다른 형식으로 변환하는 함수형 인터페이스

import java.util.function.IntFunction;

public class Main {
    public static void main(String[] args) {
        // IntFunction을 이용하여 int 값을 문자열로 변환하는 예시
        IntFunction<String> intToString = num -> String.valueOf(num);

        // IntFunction에 int 값을 전달하여 문자열로 변환
        String convertedString = intToString.apply(10);
        System.out.println("Converted string: " + convertedString);
    }
}

[출력결과]
Converted string: 10

 

 

 


ObjIntConsumer<T>
`accept(T obj, int value)` 메서드를 호출하여 제네릭 타입 T와 int 값을 입력으로 받아서 그에 맞는 작업을 수행하는 함수형 인터페이스

import java.util.function.ObjIntConsumer;

public class Main {
    public static void main(String[] args) {
        // ObjIntConsumer을 이용하여 문자열과 숫자를 연결하여 출력하는 예시
        ObjIntConsumer<String> stringNumberPrinter = (str, num) -> System.out.println(str + num);

        // ObjIntConsumer에 문자열과 숫자를 전달하여 출력
        stringNumberPrinter.accept("The number is ", 10);
    }
}

[출력결과]
The number is 10