람다, 내부클래스, 익명클래스 - 실습(3)

말하는 감자·2025년 1월 8일
0
post-thumbnail

Code

public class Car2{
    public String name;
    public int capacity;
    public int price;
    public int age;

    public Car2(String name, int capacity, int price, int age){
        this.name = name;
        this.capacity = capacity;
        this.price = price;
        this.age = age;
    }

    public String toString(){
        return name;
    }
}

import java.util.ArrayList;
import java.util.List;

public class CarExam2 {
    public static void main(String[] args) {
        List<Car2> cars = new ArrayList<>();
        cars.add( new Car2("작은차",2,800,3) );
        cars.add( new Car2("봉고차",12,1500,8) );
        cars.add( new Car2("중간차",5,2200,0) );
        cars.add( new Car2("비싼차",5,3500,1) );

        printCar(cars, new CheckCarForBigAndNotExpensive());
    }
    public static void printCar(List<Car2> cars,CheckCar tester){
        for(Car2 car:cars){
            if(tester.test(car)){
                System.out.println(car);
            }
        }
    }

    interface CheckCar{
        boolean test(Car2 car);
    }

    static class CheckCarForBigAndNotExpensive implements  CheckCar{
        @Override
        public boolean test(Car2 car) {
            return car.capacity>=4 && car.price < 2500;
        }
    }

}

람다식으로 변형

import java.util.ArrayList;
import java.util.List;

public class CarExam2 {
    public static void main(String[] args) {
        List<Car2> cars = new ArrayList<>();
        cars.add( new Car2("작은차",2,800,3) );
        cars.add( new Car2("봉고차",12,1500,8) );
        cars.add( new Car2("중간차",5,2200,0) );
        cars.add( new Car2("비싼차",5,3500,1) );

        printCar(cars);
    }
    public static void printCar(List<Car2> cars){
        cars.stream()
                .filter(car -> car.price<2500
                && car.capacity>=4)
                .forEach(System.out::println);
    }
}
profile
주니어개발자(?)

0개의 댓글