/* package whatever; // don't place package name! */
import java.math.BigDecimal;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import java.util.stream.Stream;
class Ideone
{
UnaryOperator
<BigDecimal
> DoublePrice
= price
-> price.
multiply(BigDecimal.
valueOf(2L
)); BinaryOperator<BigDecimal> WholesalePrice = (price, advantage) -> price.add(advantage);
UnaryOperator
<BigDecimal
> WholesalePrice80
= price
-> WholesalePrice.
apply(price,
BigDecimal.
valueOf(80L
)); UnaryOperator
<BigDecimal
> WholesalePrice200
= price
-> WholesalePrice.
apply(price,
BigDecimal.
valueOf(200L
));
void doCalc() {
Function
<String, BigDecimal
> CalcPrice
= NewPrice
.andThen(DoublePrice)
.andThen(WholesalePrice80)
.andThen(DoublePrice)
.andThen(WholesalePrice200);
Stream.
of("120",
"100").
map(CalcPrice
).
forEach(System.
out::println
); }
{
new Ideone().doCalc();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpbmFyeU9wZXJhdG9yOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlVuYXJ5T3BlcmF0b3I7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKCmNsYXNzIElkZW9uZQp7CglGdW5jdGlvbjxTdHJpbmcsIEJpZ0RlY2ltYWw+IE5ld1ByaWNlID0gQmlnRGVjaW1hbDo6bmV3OwoJVW5hcnlPcGVyYXRvcjxCaWdEZWNpbWFsPiBEb3VibGVQcmljZSA9IHByaWNlIC0+IHByaWNlLm11bHRpcGx5KEJpZ0RlY2ltYWwudmFsdWVPZigyTCkpOwoJQmluYXJ5T3BlcmF0b3I8QmlnRGVjaW1hbD4gV2hvbGVzYWxlUHJpY2UgPSAocHJpY2UsIGFkdmFudGFnZSkgLT4gcHJpY2UuYWRkKGFkdmFudGFnZSk7CglVbmFyeU9wZXJhdG9yPEJpZ0RlY2ltYWw+IFdob2xlc2FsZVByaWNlODAgPSBwcmljZSAtPiBXaG9sZXNhbGVQcmljZS5hcHBseShwcmljZSwgQmlnRGVjaW1hbC52YWx1ZU9mKDgwTCkpOwoJVW5hcnlPcGVyYXRvcjxCaWdEZWNpbWFsPiBXaG9sZXNhbGVQcmljZTIwMCA9IHByaWNlIC0+IFdob2xlc2FsZVByaWNlLmFwcGx5KHByaWNlLCBCaWdEZWNpbWFsLnZhbHVlT2YoMjAwTCkpOwoKCXZvaWQgZG9DYWxjKCkgewoJCUZ1bmN0aW9uPFN0cmluZywgQmlnRGVjaW1hbD4gQ2FsY1ByaWNlID0gTmV3UHJpY2UKCQkJCS5hbmRUaGVuKERvdWJsZVByaWNlKQoJCQkJLmFuZFRoZW4oV2hvbGVzYWxlUHJpY2U4MCkKCQkJCS5hbmRUaGVuKERvdWJsZVByaWNlKQoJCQkJLmFuZFRoZW4oV2hvbGVzYWxlUHJpY2UyMDApOwoKCQlTdHJlYW0ub2YoIjEyMCIsICIxMDAiKS5tYXAoQ2FsY1ByaWNlKS5mb3JFYWNoKFN5c3RlbS5vdXQ6OnByaW50bG4pOwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCW5ldyBJZGVvbmUoKS5kb0NhbGMoKTsKCX0KfQ==