#36 rxjava: functional interface ex

This commit is contained in:
haerong22
2023-04-26 01:15:38 +09:00
parent 110705ec37
commit 0389c9341c
5 changed files with 141 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
package org.example.common;
import io.reactivex.rxjava3.core.Observable;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;

View File

@@ -0,0 +1,40 @@
package org.example.ex06;
import org.example.common.*;
import java.util.Arrays;
import java.util.List;
/**
* 사용자 정의 Predicate를 익명 클래스로 구현하는 예제
*/
public class FunctionalInterfaceEx {
public static void main(String[] args) {
List<Car> cars = Arrays.asList(
new Car(CarMaker.HYUNDAE, CarType.SUV, "팰리세이드", 28000000, true),
new Car(CarMaker.SAMSUNG, CarType.SEDAN, "SM5", 35000000, true),
new Car(CarMaker.CHEVROLET, CarType.SUV, "트래버스", 50000000, true),
new Car(CarMaker.KIA, CarType.SEDAN, "K5", 20000000, false),
new Car(CarMaker.SSANGYOUNG, CarType.SUV, "티볼리", 23000000, true)
);
List<Car> carsFilteredByPrice = CarFilter.filterCarByCustomPredicate(cars, new CarPredicate() {
@Override
public boolean test(Car car) {
return car.getCarPrice() > 30000000;
}
});
for(Car car : carsFilteredByPrice)
System.out.println("차 이름: " + car.getCarName() + ", 가격: " + car.getCarPrice());
List<Car> carsFilteredByCarType = CarFilter.filterCarByCustomPredicate(cars, new CarPredicate() {
@Override
public boolean test(Car car) {
return car.getCarType().equals(CarType.SUV);
}
});
for(Car car : carsFilteredByCarType)
System.out.println("차 이름: " + car.getCarName() + ", 차종: " + car.getCarType());
}
}

View File

@@ -0,0 +1,34 @@
package org.example.ex06;
import org.example.common.Car;
import org.example.common.CarFilter;
import org.example.common.CarMaker;
import org.example.common.CarType;
import java.util.Arrays;
import java.util.List;
/**
* 사용자 정의 Predicate를 람다 표현식으로 사용하는 예제
*/
public class FunctionalInterfaceToLamdaEx {
public static void main(String[] args) {
List<Car> cars = Arrays.asList(
new Car(CarMaker.HYUNDAE, CarType.SUV, "팰리세이드", 28000000, true),
new Car(CarMaker.SAMSUNG, CarType.SEDAN, "SM5", 35000000, true),
new Car(CarMaker.CHEVROLET, CarType.SUV, "트래버스", 50000000, true),
new Car(CarMaker.KIA, CarType.SEDAN, "K5", 20000000, false),
new Car(CarMaker.SSANGYOUNG, CarType.SUV, "티볼리", 23000000, true)
);
List<Car> carsFilteredByPrice =
CarFilter.filterCarByCustomPredicate(cars, (Car car) -> car.getCarPrice() > 30000000);
for(Car car : carsFilteredByPrice)
System.out.println("차 이름: " + car.getCarName() + ", 가격: " + car.getCarPrice());
List<Car> carsFilteredByCarType =
CarFilter.filterCarByCustomPredicate(cars, car -> car.getCarType().equals(CarType.SUV));
for(Car car : carsFilteredByCarType)
System.out.println("차 이름: " + car.getCarName() + ", 차종: " + car.getCarType());
}
}

View File

@@ -0,0 +1,35 @@
package org.example.ex06;
import org.example.common.Car;
import org.example.common.CarMaker;
import org.example.common.CarType;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* 하나의 추상 메서드를 가지고 있는 기존 인터페이스를 구현하는 예제
*/
public class LegacyInterfaceEx {
public static void main(String[] args) {
List<Car> cars = Arrays.asList(
new Car(CarMaker.HYUNDAE, CarType.SUV, "팰리세이드", 28000000, true),
new Car(CarMaker.SAMSUNG, CarType.SEDAN, "SM5", 35000000, true),
new Car(CarMaker.CHEVROLET, CarType.SUV, "트래버스", 50000000, true),
new Car(CarMaker.KIA, CarType.SEDAN, "K5", 20000000, false),
new Car(CarMaker.SSANGYOUNG, CarType.SUV, "티볼리", 23000000, true)
);
Collections.sort(cars, new Comparator<Car>() {
@Override
public int compare(Car car1, Car car2) {
return car1.getCarPrice() - car2.getCarPrice();
}
});
for(Car car : cars)
System.out.println("차 이름: " + car.getCarName() + ", 가격: " + car.getCarPrice());
}
}

View File

@@ -0,0 +1,30 @@
package org.example.ex06;
import org.example.common.Car;
import org.example.common.CarMaker;
import org.example.common.CarType;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* 하나의 추상 메서드를 가지고 있는 기존 인터페이스를 함수형 인터페이스로 사용하는 예제
*/
public class LegacyInterfaceToFunctionalInterfaceEx {
public static void main(String[] args) {
List<Car> cars = Arrays.asList(
new Car(CarMaker.HYUNDAE, CarType.SUV, "팰리세이드", 28000000, true),
new Car(CarMaker.SAMSUNG, CarType.SEDAN, "SM5", 35000000, true),
new Car(CarMaker.CHEVROLET, CarType.SUV, "트래버스", 50000000, true),
new Car(CarMaker.KIA, CarType.SEDAN, "K5", 20000000, false),
new Car(CarMaker.SSANGYOUNG, CarType.SUV, "티볼리", 23000000, true)
);
Collections.sort(cars, (car1, car2) -> car1.getCarPrice() - car2.getCarPrice());
for(Car car : cars)
System.out.println("차 이름: " + car.getCarName() + ", 가격: " + car.getCarPrice());
}
}