Searching...
Monday, March 19, 2018

Filters method is Private methods in interface - Java9

March 19, 2018

FilterMain.java


/**
*
*/
package com.java9r;

/**
* @author Ravi
*
*/
public class FilterMain {

/**
* @param args
*/
public static void main(String[] args) {
ProductFilter productFilter = new ProductFilterImpl();

System.out.println("Filter By Price");
System.out.println("=========================");
productFilter.filterByPriceBetween(100, 400).forEach(p -> {
System.out.println("Id: " + p.getId());
System.out.println("Name: " + p.getName());
System.out.println("Price: " + p.getPrice());
System.out.println("=========================");
});

System.out.println("Filter By Name");
System.out.println("=========================");
productFilter.filterByName("roduct 9").forEach(p -> {
System.out.println("Id: " + p.getId());
System.out.println("Name: " + p.getName());
System.out.println("Price: " + p.getPrice());
System.out.println("=========================");
});

}

}



ProductFilter.java


/**
*
*/
package com.java9r;

/**
* @author Ravi
*
*/
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public interface ProductFilter {

List<Product> getProducts();

default List<Product> filterByName(String name) {
return filterBy(p -> p.getName().contains(name));
}

default List<Product> filterByPriceBetween(double min, double max) {
return filterBy(p -> p.getPrice() >= min && p.getPrice() <= max);
}

private List<Product> filterBy(Predicate<Product> toFilterBy) {
return getProducts().stream().filter(toFilterBy).collect(Collectors.toList());
}
}



ProductFilterImpl.java


/**
*
*/
package com.filter1;

/**
* @author Ravi
*
*/
import java.util.List;

public class ProductFilterImpl implements ProductFilter {


public List<Product> getProducts() {
return List.of(
new Product("001", "product 1", 100),
new Product("002", "product 2", 200),
new Product("003", "product 3", 300),
new Product("004", "product 4", 400),
new Product("005", "product 5", 500),
new Product("006", "product 6", 600),
new Product("007", "product 7", 700),
new Product("008", "product 8", 800),
new Product("009", "product 9", 900)


);
}
}




Output


Filter By Price
=========================
Id: 001
Name: product 1
Price: 100.0
=========================
Id: 002
Name: product 2
Price: 200.0
=========================
Id: 003
Name: product 3
Price: 300.0
=========================
Id: 004
Name: product 4
Price: 400.0
=========================
Filter By Name
=========================
Id: 009
Name: product 9
Price: 900.0
=========================



0 comments:

Post a Comment

ads2