首页 > 其他分享 >魔功心法-函数表达式篇(工具类)

魔功心法-函数表达式篇(工具类)

时间:2023-07-18 17:44:15浏览次数:28  
标签:魔功 return after static 心法 initialize public 表达式 before

前言:

函数表达式篇拖太久了。而且里面的知识点很零散,陆续1-2个月了,也没有找到入手点,体系庞大且复杂,还没有把脉络捋清楚,加上一些个人的事情一直抽不开身。但是抽空写了个工具类,这个工具类主要是包装作用,把要学习的内容大致都过了一遍,先凑合着用吧,已经连注释都懒得写了(~)。

工具类

import java.util.function.*;

/**
 * @author love bb
 * @create 2023-07-18 14:29
 */
public class FunctionConstructorUtils {
    public static <T> void initialize(T t, Consumer<? super T> consumer) {
        consumer.accept(t);
    }

    public static <T> Consumer<? super T> initialize(Consumer<T> before, Consumer<? super T> after) {
        return before.andThen(after);
    }

    public static <T, U> void initialize(T t, U u, BiConsumer<? super T, ? super U> consumer) {
        consumer.accept(t, u);
    }

    public static <T, U> BiConsumer<? super T, ? super U> initialize(T t, U u, BiConsumer<T, U> before, BiConsumer<? super T, ? super U> after) {
        return before.andThen(after);
    }

    public static <T> T initialize(Supplier<? extends T> supplier) {
        return supplier.get();
    }

    public static <T> boolean initialize(T t, Predicate<? super T> predicate) {
        return predicate.test(t);
    }

    public static <T> Predicate<? super T> initialize(Boolean type, Predicate<T> before, Predicate<? super T> after) {
        if (type) {
            return before.and(after);
        }
        return before.or(after);
    }

    public static <T> Predicate<? super T> initialize(Predicate<? super T> predicate) {
        return predicate.negate();
    }

    public static <T> Predicate<? super T> initialize(T t) {
        return Predicate.isEqual(t);
    }

    public static <T, U> boolean initialize(T t, U u, BiPredicate<? super T, ? super U> predicate) {
        return predicate.test(t, u);
    }

    public static <T, U> BiPredicate<? super T, ? super U> initialize(Boolean type, BiPredicate<T, U> before, BiPredicate<? super T, ? super U> after) {
        if (type) {
            return before.and(after);
        }
        return before.or(after);
    }

    public static <T, U> BiPredicate<? super T, ? super U> initialize(BiPredicate<? super T, ? super U> predicate) {
        return predicate.negate();
    }

    public static <T, R> R initialize(T t, Function<? super T, ? extends R> function) {
        return function.apply(t);
    }

    public static <T, R, V> R initialize(V v, Function<? super T, ? extends R> before, Function<? super V, ? extends T> after) {
        return before.compose(after).apply(v);
    }

    public static <T, R, V> V initialize(Function<? super T, ? extends R> before, Function<? super R, ? extends V> after, T t) {
        return before.andThen(after).apply(t);
    }

    public static <T, U, R> R initialize(T t, U u, BiFunction<? super T, ? super U, ? extends R> function) {
        return function.apply(t, u);
    }

    public static <T, U, R, V> V initialize(BiFunction<? super T, ? super U, ? extends R> before, Function<? super R, ? extends V> after, T t, U u) {
        return before.andThen(after).apply(t, u);
    }

}

 

标签:魔功,return,after,static,心法,initialize,public,表达式,before
From: https://www.cnblogs.com/LoveBB/p/17563667.html

相关文章

  • 表达式树的建立和遍历
    启发:2022CSPJT3表达式树是一棵二叉树,二叉树的遍历分为:1.前序遍历(中左右)2.中序遍历(左中右)3.后序遍历(左右中)中序遍历得到的表达式是人看的,前序和后序得到的方便机器运算,其中后序遍历方便在线性时间内求解,并且运算顺序唯一确定。对于一棵表达式树,其叶节点一定是数字,其他节点一......
  • javascript-js正则表达式-常用的正则表达式
    js常用的正则表达式1.匹配Email地址:constemailRegex=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;2.匹配URL:consturlRegex=/^(https?:\/\/)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]+)?(\/[^\s]*)?$/;3.匹配日期(YYYY-MM-DD):constdateRegex=/^\d{4}-(0[1-9]|......
  • java正则表达式过滤工具类
    正则表达式过滤工具类importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***@Description:*@Date:2023/7/7*@Author:*/publicclassCheckUtil{privatestaticfinalStringV_NUMBER="^([1-9]{1}[0-9]{0,})$";privatesta......
  • 用字符串表达式执行引擎消除掉if else if
    背景最近我搞了个微信机器人,@机器人xxx这样来发送命令能拿到的信息有,消息内容,消息发送人,消息所在的群id等需要根据消息内容或者消息发送群id等不同的条件组合来决定走哪个处理逻辑。简单来说的话,就用很多ifelseifif(model.context.StartsWith("命令1") && model.from......
  • LINQ和lambda表达式
    LINQ:select结尾,from开头(from->where->groupby->having->orderby->join->select)vartt=fromaaincdselectaa.Count();//查询一个值就不用数组连接数组,joinin放在select前面varty=froma1inwer//用var或者IEnume......
  • 如何使用C#中的Lambda表达式操作Redis Hash结构,简化缓存中对象属性的读写操作
    Redis是一个开源的、高性能的、基于内存的键值数据库,它支持多种数据结构,如字符串、列表、集合、散列、有序集合等。其中,Redis的散列(Hash)结构是一个常用的结构,今天跟大家分享一个我的日常操作,如何使用Redis的散列(Hash)结构来缓存和查询对象的属性值,以及如何用Lambda表达式树来简化......
  • 可以彻底告别手写正则表达式了
    这篇文章的目的是让你能得到完美的正则表达式,而且还不用自己拼。说到正则表达式,一直是令我头疼的问题,这家伙一般时候用不到,等用到的时候发现它的规则是一点儿也记不住,\d表示一个数字,\s表示包括下划线在内的任意单词字符,也就是 [A-Za-z0-9_],还有[\s\S]*可以匹配包括换行在内的任......
  • Lambda表达式
    1基础介绍1.1概念介绍Java Lambda表达式是Java8中最重要的新特性之一。它们是一种可传递的匿名函数,可以作为参数传递给方法或存储在变量中,因此可以在需要的时候调用它们。Lambda表达式的主要目的是简化Java代码,使其更易于阅读和编写。 Lambda表达式的语法非常简洁和清晰......
  • 正整数正则表达式
    正整数正则表达式正数的正则表达式(包括0,小数保留两位):^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+\d)|0)$正数的正则表达式(不包括0,小数保留两位):^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+\d))$正整数的正则表达式(包括0):^[+]{0,1}(\d+)$正整数的正则表达式(不包括0......
  • 2023-07-13:如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串
    2023-07-13:如果你熟悉Shell编程,那么一定了解过花括号展开,它可以用来生成任意字符串。花括号展开的表达式可以看作一个由花括号、逗号和小写英文字母组成的字符串定义下面几条语法规则:如果只给出单一的元素x,那么表达式表示的字符串就只有"x"。R(x)={x}例如,表达式"a"......