diff --git a/RxJava/practice/src/main/java/org/example/common/Car.java b/RxJava/practice/src/main/java/org/example/common/Car.java new file mode 100644 index 00000000..339fadf8 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/common/Car.java @@ -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; + } +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/common/CarFilter.java b/RxJava/practice/src/main/java/org/example/common/CarFilter.java new file mode 100644 index 00000000..c278dfce --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/common/CarFilter.java @@ -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 filterCarByCustomPredicate(List cars, CarPredicate p) { + List resultCars = new ArrayList<>(); + for(Car car : cars) + if (p.test(car)) { + resultCars.add(car); + } + + return resultCars; + } + + // java.util.function 패키지에 내장된 Predicate 사용 + public static List filterCarByBuiltinPredicate(List cars, Predicate p) { + List resultCars = new ArrayList<>(); + for(Car car : cars) + if (p.test(car)) { + resultCars.add(car); + } + + return resultCars; + } +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/common/CarMaker.java b/RxJava/practice/src/main/java/org/example/common/CarMaker.java new file mode 100644 index 00000000..15e93d92 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/common/CarMaker.java @@ -0,0 +1,9 @@ +package org.example.common; + +public enum CarMaker { + HYUNDAE, + CHEVROLET, + KIA, + SSANGYOUNG, + SAMSUNG +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/common/CarPredicate.java b/RxJava/practice/src/main/java/org/example/common/CarPredicate.java new file mode 100644 index 00000000..9fb498b2 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/common/CarPredicate.java @@ -0,0 +1,5 @@ +package org.example.common; + +public interface CarPredicate { + boolean test(Car car); +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/common/CarType.java b/RxJava/practice/src/main/java/org/example/common/CarType.java new file mode 100644 index 00000000..0812a27c --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/common/CarType.java @@ -0,0 +1,7 @@ +package org.example.common; + +public enum CarType { + SEDAN, + SUV, + PICKUPTRUK +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/common/SampleData.java b/RxJava/practice/src/main/java/org/example/common/SampleData.java new file mode 100644 index 00000000..77f7a878 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/common/SampleData.java @@ -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 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 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 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 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 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 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 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 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]); + } + + +} \ No newline at end of file