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);
}
}