com.github.phantomthief.util.MorePredicates Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of more-lambdas Show documentation
Show all versions of more-lambdas Show documentation
Some useful lambda implements for Java 8.
The newest version!
package com.github.phantomthief.util;
import static java.util.Collections.newSetFromMap;
import java.util.Objects;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
/**
* MorePredicates增强工具集合
* 用于{@link Predicate}断言条件的工具集合
*
* @author w.vela
*/
public final class MorePredicates {
/**
* 工具类,禁止实例化成对象
*/
private MorePredicates() {
throw new UnsupportedOperationException();
}
/**
* 产生一个相反的断言条件,对一个输入的{@link Predicate}取not
*
* @param predicate 输入的条件对象
* @param 条件入参类型泛型
* @return 新的断言条件
*/
public static Predicate not(Predicate predicate) {
return t -> !predicate.test(t);
}
/**
* 当断言结果不成立时,执行指定的处理函数
*
* @param predicate 输入的条件对象
* @param negateConsumer 条件不成立时执行的处理函数
* @param 条件入参类型泛型
* @return 新的断言条件
*/
public static Predicate applyOtherwise(Predicate predicate,
Consumer negateConsumer) {
return t -> {
boolean result = predicate.test(t);
if (!result) {
negateConsumer.accept(t);
}
return result;
};
}
/**
* 唯一性检查的断言条件,相同标识的对象不能被重复出现
*
* @param mapper 映射函数,用于从输入对象获取唯一性检查的标识
* @param 条件入参类型泛型
* @return 断言条件对象
*/
public static Predicate distinctUsing(Function mapper) {
return new Predicate() {
private final Set © 2015 - 2025 Weber Informatics LLC | Privacy Policy