#36 rxjava: functional interface

This commit is contained in:
haerong22
2023-04-26 01:14:02 +09:00
parent 55f43da1c9
commit 110705ec37
6 changed files with 217 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
package org.example.common;
public class Car {
private CarMaker carMaker;
private CarType carType;
private String carName;
private int carPrice;
private boolean isNew;
public Car(String carName){
this.carName = carName;
}
public Car(String carName, CarType carType){
this.carName = carName;
this.carType = carType;
}
public Car(CarMaker carMaker, String carName, CarType carType, int carPrice){
this.carMaker = carMaker;
this.carName = carName;
this.carType = carType;
this.carPrice = carPrice;
}
public Car(CarMaker carMaker, CarType carType, String carName, int carPrice, boolean isNew) {
this.carMaker = carMaker;
this.carType = carType;
this.carName = carName;
this.carPrice = carPrice;
this.isNew = isNew;
}
public CarMaker getCarMaker() {
return carMaker;
}
public void setCarMaker(CarMaker carMaker) {
this.carMaker = carMaker;
}
public CarType getCarType() {
return carType;
}
public void setCarType(CarType carType) {
this.carType = carType;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public int getCarPrice() {
return carPrice;
}
public void setCarPrice(int carPrice) {
this.carPrice = carPrice;
}
public boolean isNew() {
return isNew;
}
public void setNew(boolean aNew) {
isNew = aNew;
}
}

View File

@@ -0,0 +1,29 @@
package org.example.common;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class CarFilter {
// 사용자 정의 Predicate 사용
public static List<Car> filterCarByCustomPredicate(List<Car> cars, CarPredicate p) {
List<Car> resultCars = new ArrayList<>();
for(Car car : cars)
if (p.test(car)) {
resultCars.add(car);
}
return resultCars;
}
// java.util.function 패키지에 내장된 Predicate 사용
public static List<Car> filterCarByBuiltinPredicate(List<Car> cars, Predicate<Car> p) {
List<Car> resultCars = new ArrayList<>();
for(Car car : cars)
if (p.test(car)) {
resultCars.add(car);
}
return resultCars;
}
}

View File

@@ -0,0 +1,9 @@
package org.example.common;
public enum CarMaker {
HYUNDAE,
CHEVROLET,
KIA,
SSANGYOUNG,
SAMSUNG
}

View File

@@ -0,0 +1,5 @@
package org.example.common;
public interface CarPredicate {
boolean test(Car car);
}

View File

@@ -0,0 +1,7 @@
package org.example.common;
public enum CarType {
SEDAN,
SUV,
PICKUPTRUK
}

View File

@@ -0,0 +1,94 @@
package org.example.common;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class SampleData {
public static CarMaker[] carMakersDuplicated = {
CarMaker.CHEVROLET,
CarMaker.HYUNDAE,
CarMaker.SAMSUNG,
CarMaker.SSANGYOUNG,
CarMaker.CHEVROLET,
CarMaker.HYUNDAE,
CarMaker.KIA,
CarMaker.SSANGYOUNG
};
public static CarMaker[] carMakers = {
CarMaker.CHEVROLET,
CarMaker.HYUNDAE,
CarMaker.SAMSUNG,
CarMaker.SSANGYOUNG,
CarMaker.KIA
};
public static List<Car> carList =
Arrays.asList(
new Car(CarMaker.CHEVROLET, "말리부", CarType.SEDAN, 23_000_000),
new Car(CarMaker.HYUNDAE, "쏘렌토", CarType.SUV, 33_000_000),
new Car(CarMaker.CHEVROLET, "트래버스", CarType.SUV, 50_000_000),
new Car(CarMaker.HYUNDAE, "팰리세이드", CarType.SEDAN, 28_000_000),
new Car(CarMaker.CHEVROLET, "트랙스", CarType.SUV, 18_000_000),
new Car(CarMaker.SSANGYOUNG, "티볼리", CarType.SUV, 23_000_000),
new Car(CarMaker.SAMSUNG, "SM6", CarType.SUV, 40_000_000),
new Car(CarMaker.SSANGYOUNG, "G4렉스턴", CarType.SUV, 43_000_000),
new Car(CarMaker.SAMSUNG, "SM5", CarType.SEDAN, 35_000_000)
);
// A, B, C 구간의 차량 속도 데이터
public static final Integer[] speedOfSectionA = {100, 110, 115, 130, 160};
public static final Integer[] speedOfSectionB = {85, 90, 100, 110, 105, 113, 125};
public static final Integer[] speedOfSectionC = {98, 88, 111, 123, 155, 124, 136, 143};
// 지점 A의 월별 매출
public static final List<Integer> salesOfBranchA = Arrays.asList(
15_000_000, 25_000_000, 10_000_000, 35_000_000, 23_000_000, 40_000_000, 50_000_000, 45_000_000,
35_000_000, 23_000_000, 15_000_000, 10_000_000
);
// 지점 B의 월별 매출
public static final List<Integer> salesOfBranchB = Arrays.asList(
11_000_000, 23_000_000, 15_000_000, 32_000_000, 13_000_000, 45_000_000, 55_000_000, 43_000_000,
25_000_000, 28_000_000, 19_000_000, 13_000_000
);
// 지점 C의 월별 매출
public static final List<Integer> salesOfBranchC = Arrays.asList(
12_000_000, 21_000_000, 19_000_000, 33_000_000, 33_000_000, 41_000_000, 52_000_000, 48_000_000,
32_000_000, 21_000_000, 18_000_000, 14_000_000
);
// 서울의 시간별 미세먼지 농도
public static final List<Integer> seoulPM10List = Arrays.asList(
45, 30, 68, 70, 100, 110, 120, 90, 80, 60, 50, 60, 70, 80, 100, 150, 140, 130, 170, 130, 90, 86, 67, 50
);
// 부산의 시간별 미세먼지 농도
public static final List<Integer> busanPM10List = Arrays.asList(
35, 30, 63, 50, 80, 90, 100, 80, 70, 50, 55, 60, 65, 75, 80, 90, 100, 90, 120, 110, 70, 66, 65, 55
);
// 인천의 시간별 미세먼지 농도
public static final List<Integer> incheonPM10List = Arrays.asList(
55, 40, 73, 70, 85, 99, 120, 85, 75, 73, 80, 70, 95, 95, 100, 120, 110, 120, 140, 120, 100, 125, 135, 125
);
// 1시간 동안 서울의 온도 변화 데이터
public static Integer[] temperatureOfSeoul = {10, 13, 14, 12, 11, 9};
// 1시간 동안 서울의 습도 변화 데이터
public static Integer[] humidityOfSeoul = {45, 35, 33, 43, 32, 62};
public static Observable<String> getSpeedPerSection(String section, long interval, final Integer[] speedData){
return Observable.interval(interval, TimeUnit.MILLISECONDS)
.take(speedData.length)
.map(Long::intValue)
.map(i -> section + " 지점의 차량 속도: " + speedData[i]);
}
}