Skip to content

Instantly share code, notes, and snippets.

View HDBandit's full-sized avatar

Gerard Vico HDBandit

View GitHub Profile
maybeCar.map(Car::getAudioSystem)
.filter(as -> "Pionner".equals(as.getBrand())
.ifPresent(() -> System.out.println("ok"));
public class Car {
private String engine;
private String color;
private long frameNumber;
public Car(long frameNumber, String engine, String color) {
this.engine = engine;
this.color = color;
this.frameNumber = frameNumber;
public class LightCar {
private String engine;
private String color;
public LightCar(String engine, String color) {
this.engine = engine;
this.color = color;
}
public class LightCarContainer {
private static HashMap<String,LightCar> lightCars = new HashMap<String, LightCar>();
public static LightCar getLightCar(String engine, String color) {
String key = engine + color;
if (!lightCars.containsKey(key)) {
lightCars.put(key, new LightCar(engine,color));
}
return lightCars.get(key);
public class CarFlyWeight implements Car {
private long frameNumber;
private LightCar lightCar;
public CarFlyWeight(long frameNumber, LightCar lightCar) {
this.frameNumber = frameNumber;
this.lightCar = lightCar;
}
public class CarFactory {
Car create(long frameNumber, String engine, String color) {
return new CarFlyWeight(frameNumber, LightCarContainer.getLightCar(engine, color));
}
}
// business logic
public static List<Car> filterCarsByBrand(List<Car> cars, String brand) {
ArrayList<Car> filteredCars = new ArrayList<Car>();
for (Car car : cars) {
if (brand.equals(car.getBrand())) {
filteredCars.add(car);
}
}
return filteredCars;
}
// business logic
public static List<Car> filterCarsByBrandAndColor(List<Car> cars, String brand, String color) {
// we can reuse the method to filtering by brand
List<Car> filteredCarsByBrand = filterCarsByBrand(cars, brand);
ArrayList<Car> filteredCars = new ArrayList<Car>();
for (Car car : cars) {
if (color.equals(car.getColor())) {
filteredCars.add(car);
}
}
// new interface
public interface CarChecker {
boolean check(Car car);
}
...
//business logic
public static List<Car> filterCars(List<Car> cars, CarChecker carChecker) {
ArrayList<Car> filteredCars = new ArrayList<Car>();
List<Car> cars = filterCars(input, new CarChecker() {
public boolean check(Car car) {
return "Ferrari".equals(car.getBrand()) && "red".equals(car.getColor());
}
});