package nl.helixsoft.recordstream;
public abstract class ReduceFunctions
{
public static final BiFunction<Object, Object, Object> FIRST = new BiFunction<Object, Object, Object>() {
@Override
public Object apply(Object chain, Object more)
{
if (chain == null)
{
return more;
}
else
{
return chain;
}
}
};
public static BiFunction<Integer, Integer, Integer> INT_SUM = new BiFunction<Integer, Integer, Integer>() {
@Override
public Integer apply(Integer chain, Integer more)
{
if (chain == null)
{
return more;
}
if (more == null)
{
return chain;
}
return chain + more;
}
};
public static BiFunction<Integer, Integer, Integer> INT_MAX = new BiFunction<Integer, Integer, Integer>() {
@Override
public Integer apply(Integer chain, Integer more)
{
if (chain == null)
{
return more;
}
if (more == null)
{
return chain;
}
return chain > more ? chain : more;
}
};
public static BiFunction<Integer, Integer, Integer> INT_MIN = new BiFunction<Integer, Integer, Integer>() {
@Override
public Integer apply(Integer chain, Integer more)
{
if (chain == null)
{
return more;
}
if (more == null)
{
return chain;
}
return chain < more ? chain : more;
}
};
public static BiFunction<Long, Long, Long> LONG_SUM = new BiFunction<Long, Long, Long>() {
@Override
public Long apply(Long chain, Long more)
{
if (chain == null)
{
return more;
}
if (more == null)
{
return chain;
}
return chain + more;
}
};
}