본문 바로가기

java22

Lambda 03 Predicate의 결합 Predicate의 결합 and(), or(), negate()로 두 Predicate를 하나로 결합(default메소드) A.and(B)는 A와 B의 and연산 결과 A.or(B)는 A와 B의 or연산 결과 A.negate()는 A의 not연산 결과 Predicate p = i -> i i i%2 == 100; Predicate notP = p.negate(); // negate는 not이므로, i >= 100 이된다. Predicate all = i -> notP.and(q).or(r); // 100 Integer.toBinaryString(i); Function h = f.andThen(g);//f를 실행하.. 2021. 12. 26.
Lambda 02 - java.util.function 패키지 자바가 람다 식 사용을 위한 함수형 인터페이스를 이미 제공하고 있다. 이전의 포스트에서 우리가 MyFunction을 정의한 것처럼 따로 만들 필요가 없어진다. 함수형 인터페이스 함수형 인터페이스 메서드 설명 java.lang.Runnable void run() 매개변수도 없고, 반환값도 없음 Supplier T get() 매개변수는 없고, 반환값만 있음 Consumer void accept(T t) Supplier와 반대로 매개변수만 있고, 반환값이 없음 Function R apply(T t) 일반적인 함수. 하나의 매개변수를 받아서 결과를 반환 Predicate boolean test(T t) 조건식을 표현하는데 사용됨. 매개변수는 하나, 반환 타입은 boolean 매개변수가 2개인 함수형 인터페이스 .. 2021. 12. 23.
Lambda 01 함수형 언어는 jdk 1.8부터 시작. 람다식 : 함수(메서드)를 간단한 식으로 표현하는 방법 int max(int a, int b){ return a > b ? a : b; } 위와 같은 메소드를 아래처럼 간단한 식으로 만들어준다. (a, b) -> a > b ? a: b 람다식은 익명함수이다. 람다식을 작성하는 방법 1. 메서드의 이름과 반환타입을 제거하고 →을 { }블록 앞에 추가한다. (int a, int b) -> {return a > b ? a : b} 2. 반환값이 있는 경우, 식이나 값만 적고 Return문 생략가능(끝에 ';' 안붙임) (int a, int b) -> a > b ? a : b 3. 매개변수의 타입이 추론가능하면 생략가능 (a, b) -> a > b ? a: b 람다식 작성.. 2021. 12. 23.
Serializable 자바 Serializable은 아래와 같이 생겼다. 이렇게 텅텅 빈 인터페이스는 왜 사용하는 것인가 궁금하였다. 그리고 직렬화라 함은 CPU와 IO디바이스가 데이터를 주고받을 때와 같은 하나의 시스템이 다른 하나의 시스템과 데이터를 주고 받을 때 직렬화, 역직렬화를 사용한다는 것을 알고 있었지만, 누군가가 물어보면 그것에 대해 자신있게 말할 수 없다. 하여 이 기회를 통해 일반적인 직렬화의 의미를 알아보고, 자바의 Serializable인터페이스에 대해 알아보고자 한다. 1. 직렬화란? 먼저 위키 백과에는 아래와 같이 나온다. 직렬화(直列化) 또는 시리얼라이제이션(serialization)은 컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면.. 2021. 11. 21.