Java-8-UnaryOperator

告别上位机!用MCGS触摸屏+FTP服务器,5分钟搞定工控机文件自动同步 本文介绍了一种工业自动化领域的高效解决方案,通过MCGS触摸屏结合FTP服务器实现工控机文件的自动同步,无需开发上位机软件。该方案特别适用于图像采集、参数同步、数据备份等场景,具有成本低、可靠性高、维护简便等优势。详细配置指南和实战案例帮助用户快速实现零代码文件同步。 阅读详情

Java-8-UnaryOperator

UnaryOperator extends Function<T, T>

源码:



@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {

    
    static <T> UnaryOperator<T> identity() {
        return t -> t;
    }
}

这个接口继承Function接口,Funtion接口,定义了一个apply的抽象类,接收一个泛型T对象,并且返回泛型R对象

这个接口,只接收一个泛型参数T,集成Function接口,也就是说,传入泛型T类型的参数,调用apply后,返回也T类型的参数;这个接口定义了一个静态方法,返回泛型对象的本身

简单例子

public class M1 {

    public static void main(String[] args) {

        UnaryOperator<Integer> u1 = integer ->
                integer + 100;

        System.out.println(u1.apply(100));

        System.out.println("-----------");

        List<String> strings = Arrays.asList(
                "asas",
                "ddd",
                "csd"
        );

        UnaryOperator<String> unaryOperator = s ->
                s;

        for (String s : strings) {
            System.out.println(unaryOperator.apply(s));
        }

        System.out.println("-----------");

        List<Integer> list = Arrays.asList(10,20,30,40,50);

        UnaryOperator<Integer> unaryOperator2 = integer -> integer*integer;

        unaryOperatorFun(unaryOperator2,list)
                .forEach(System.out::println);

        
    }

    private static List<Integer> unaryOperatorFun(UnaryOperator<Integer> unaryOpt, List<Integer> list){
        List<Integer> uniList = new ArrayList<>();
        list.forEach(i->uniList.add(unaryOpt.apply(i)));
        return uniList;
    }


}


DoubleUnaryOperator IntUnaryOperator LongUnaryOperator


public class M2{

    public static void main(String[] args) {

        DoubleUnaryOperator o1 = d ->

                d + d * 12.36;

        System.out.println(o1.applyAsDouble(12.58));

        System.out.println("-------------------------");

        IntUnaryOperator o2 = i ->
                (int) (i * 100 + 236.22);

        System.out.println(o2.applyAsInt(121));

        System.out.println("-------------------------");

        LongUnaryOperator longUnaryOperator = l ->

                (long) (l * 12.36 + 96.33);

        System.out.println(longUnaryOperator.applyAsLong(1212));



    }
}


BinaryOperator extends BiFunction<T,T,T>

源码:

@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T,T,T> {
   
    public static <T> BinaryOperator<T> minBy(Comparator<? super T> comparator) {
        Objects.requireNonNull(comparator);
        return (a, b) -> comparator.compare(a, b) <= 0 ? a : b;
    }

    
    public static <T> BinaryOperator<T> maxBy(Comparator<? super T> comparator) {
        Objects.requireNonNull(comparator);
        return (a, b) -> comparator.compare(a, b) >= 0 ? a : b;
    }
}


BinaryOperator 二元操作符, 传入的两个参数的类型和返回类型相同,继承BiFunction

public class M1 {


    public static void main(String[] args) {

        BinaryOperator<Integer> b1 = (i1,i2) -> i1 + i2;

        System.out.println(compute_1(100,150,b1));

        System.out.println("-----------------");

        System.out.println(compute_1(102,145,(x,y) -> x * y));

        System.out.println("-----------------");

        BinaryOperator<String> b2 = (s1,s2) -> s1.length() + "---" + s2.length();

        System.out.println(b2.apply("abc","123456"));



    }


    public static Integer compute_1(int a1,int a2,BinaryOperator<Integer> binaryOperator){
        return binaryOperator.apply(a1,a2);

    }
}




public class Student {

    private String name;
    private Integer age;
    private String className;
    public Student(String name,Integer age, String className){
        this.name=name;
        this.age=age;
        this.className = className;
    }
    public String getName() {
        return name;
    }
    public Integer getAge() {
        return age;
    }
    public String getClassName() {
        return className;
    }
}


public class M2 {

    public static void main(String[] args) {

        Student s1 = new Student("Shyam", 22,"A");
        Student s2 = new Student("Ram",23,"A");
        Student s3 = new Student("Mohan",22,"B");
        Student s4 = new Student("Ramesh",21,"B");
        List<Student> list = Arrays.asList(s1,s2,s3,s4);


        Comparator<Student> comparator = Comparator.comparing(Student::getAge);

        //Using BinaryOperator.maxBy
        System.out.println("---BinaryOperator.maxBy---");

        Map<String, Optional<Student>> map = list.stream()
                .collect(Collectors.groupingBy(Student::getClassName,
                        Collectors.reducing(BinaryOperator.maxBy(comparator))));

        map.forEach((k,v)->System.out.println("Class:"+k+" Age:"+
                ((Optional<Student>)v).get().getAge()+" Name:"+((Optional<Student>)v).get().getName()));

        //---BinaryOperator.maxBy---
        //Class:A Age:23 Name:Ram
        //Class:B Age:22 Name:Mohan
        System.out.println("");
    }
}

DoubleBinaryOperator IntBinaryOperator LongBinaryOperator



public class M3 {

    public static void main(String[] args) {

        DoubleBinaryOperator doubleBinaryOperator = (d1,d2) ->

                d1*12.36 + d2 * 23.369;

        System.out.println(doubleBinaryOperator.applyAsDouble(10.25,236.69));

        System.out.println("-----------------");


        IntBinaryOperator intBinaryOperator = (i1,i2) ->

                i1 + i2;

        System.out.println(intBinaryOperator.applyAsInt(100,3000));

        System.out.println("-----------------");

        LongBinaryOperator longBinaryOperator = (l1,l2) ->

                l1 * l2;

        System.out.println(longBinaryOperator.applyAsLong(125L,20L));




    }
}



工业以太网通讯Profinet协议详解 Profinet是通过西门子控制系统被广泛使用的工业通信协议,是一种较新的,基于以太网的工业通讯协议。 阅读详情

相关推荐

Ubuntu16.04下禁用scp、sftp和winscp

在上一篇博文《Ubuntu16.04 搭建FTP服务器,设置用户权限为只许上传、禁止下载和删除》中,我讲述了Ubuntu16.04下配置FTP,并且设定用户权限为只能上传数据,禁止下载和删除数据。这算在FTP层面封堵了服务器数据泄露的途径。 但是,Ubuntu系统的scp和sftp还是起作用的,理论上只要能用本地机器ping通服务器,就可以用scp和sftp下载数据,这还是存在数据泄露可能的,所...

HPC&Geophysics攻城狮 5735

【小家java】java8新特性之---函数式接口(Supplier、Consumer、Predicate、Function、UnaryOperator,通往高阶设计的好工具)

什么是函数式接口? 首先,它还是一个接口,所以必须满足接口最基本的定义。但它是一个特殊的接口:SAM类型的接口(Single Abstract Method)。可以在调用时,使用一个lambda表达式作为参数。 定义要求: 只能有一个抽象方法需要被实现 @FunctionalInterface interface Converter&amp;amp;amp;amp;amp;lt;F, T&amp;amp;amp;amp;amp;gt; { T conver...

架构师:通透,才能写出好代码! 6675

手把手教你绕过Incapsula reese84防护:从JS反混淆到动态Token生成全流程

本文深入解析了以Incapsula reese84为代表的现代Web客户端挑战防护机制,详细介绍了从JS反混淆、算法逆向到动态Token生成的全流程实战方法。文章系统阐述了如何通过模拟浏览器指纹、移植关键算法或嵌入JS引擎来构建自动化应对策略,并提供了稳健的令牌管理与系统架构设计思路,帮助开发者在合规前提下提升自动化工具的适应性。

jenkins8butler的博客 516

第八个七天内容知识记录

1、定义:规定集合类或集合接口中存放的数据类型 2、特点: ①实例化集合类时,可以指明具体的泛型类型 ②泛型的类型必须是类 ③实例化时,如果没有指明泛型类型,则默认是Object类型 ④静态方法中不能使用泛型 ⑤泛型不同的引用不能相互赋值 ⑥父类有泛型,子类可以选择保留泛型也可以选择指定泛型类型: 1)子类不保留父类的泛型,按需实现:没有类型,擦除;具体类型 2)子类保留父类的泛型,泛型子类:全部保留;部分保留 3、泛型方法 定义:在方法中出现了泛型的结构,泛型参数与类泛型参数没有任何关系 泛型方法可以声明

qq_43104182的博客 307

长期换衣行人重识别(Long-Term Clothes-Changing Person Reid)数据集汇总

长期换衣行人重识别任务中目前常用的数据集总览目前换衣数据集的主要问题数据集换衣/总体情况集统计DeepChange(2021)LaST(2021)COCAS(2020)VC-Clothes(2020)LTCC(2020)PRCC(2019)Celebrities-reID(2019) 总览 在长期换衣行人重识别的任务当中,数据集的获取(尤其是对于学术环境下)是一个难点,主要的困难有以下几点: 采集大规模的数据集比较困难。 采集不同的衣服的数据集比较困难。 采集不同衣服不同角度的数据集比较困难。 目前也有

KingsMan666的博客 8378

智驾域控制器硬件架构:从接口丛林到算力核心的工程解码

本文深入解析了智驾域控制器硬件架构的设计挑战与工程实践。面对复杂的接口丛林,文章详细探讨了如何高效融合摄像头、雷达等多源传感器数据,并构建以多SOC为核心的强大算力平台。同时,文章强调了电源、时钟、散热等最小系统及车规级可靠性设计的关键作用,为工程师提供了从接口驯服到算力核心协同的完整硬件解码指南。

happy2的博客 481

JAVA8 UnaryOperator接口

我们先看下这个接口的定义 @FunctionalInterface public interface UnaryOperator<T> extends Function<T, T> { /** * Returns a unary operator that always returns its input argument. * ...

鸭鸭的博客 1万+

Unity序列帧动画输出全攻略:Recorder+Timeline实战与透明通道处理

序列帧动画是游戏开发、影视动画和UI动效中的基础技术,指将连续动作分解为一系列静态图像并按序播放,形成动态视觉效果。其原理是通过时间轴精确控制每一帧的内容与时机,实现动画的逐帧呈现。在实时渲染领域,序列帧输出技术价值显著,它能够将动态内容高质量地转换为静态图像序列,便于跨平台复用、后期合成与资源分发。应用场景广泛,包括角色动画导出、技能特效制作、宣传片素材生成等。本文聚焦Unity引擎,深入解析如何利用Recorder与Timeline工具链,高效输出带Alpha透明通道的PNG序列帧,并重点攻克透明通道处

weixin_31556767的博客 327

Java8中Function函数式接口详解及使用

文章目录1.函数式接口1.1允许定义默认方法1.2允许定义静态方法1.3允许定义java.lang.Object的public方法1.4已有函数式接口2.Function函数2.1Function1.函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为lambda表达式和方法引用(用冒号::来进...

Life is for sharing的博客 6万+

【simulink模型】独立悬架振动模型,七自由度整车simulink模型

车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。

2401_84610415的博客 1581

彻底卸载Ubuntu双系统,并完美回收100G空间给D盘

本文记录了安全卸载Ubuntu双系统并回收磁盘空间的全过程。作者首先通过Windows命令行彻底清除Ubuntu启动项,避免GRUB引导报错;随后在磁盘管理中删除Linux分区,将100G未分配空间合并至相邻的D盘。针对C盘空间不足问题,作者采用Dism++清理系统文件,并将用户文档、聊天记录等迁移至扩容后的D盘。最终实现了引导纯净、空间合理分配的目标,特别强调分区扩展必须遵循"相邻原则",建议通过间接迁移而非直接扩容来优化系统盘空间管理。

2403_85993278的博客 1512

【Java 8 新特性】Java 8 UnaryOperator和BinaryOperator示例

Java 8 UnaryOperator和BinaryOperator示例UnaryOperatorBinaryOperatorBinaryOperator.maxBy和BinaryOperator.minBy参考文献 Java 8引入了可以分配为lambda表达式的UnaryOperator和BinaryOperator。 UnaryOperator和BinaryOperator是功能接口。 UnaryOperator扩展Function和BinaryOperator扩展BiFunction,因此它们接受

猫巳的博客 4022

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5208

Java 8 UnaryOperator示例

在Java 8中, UnaryOperator是一个功能接口,它扩展了Function 。 UnaryOperator接受一个参数,并返回其参数类型相同的结果。 UnaryOperator.java @FunctionalInterface public interface UnaryOperator<T> extends Function<T, T> { }...

一名可爱的技术搬运工 800

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java 8 一元运算符UnaryOperator and BinaryOperator Example

Java 8介绍了UnaryOperator和BinaryOperator可以用于指定作为lambda表达式。 UnaryOperator与BinaryOperator是函数式接口。二者根据传入的参数决定了UnaryOperator继承了Function并且BinaryOperator继承了BiFunction. UnaryOperator接受一个操作符并返回相同类型的值。BinaryOperat

tbdp6411的专栏 4318

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

UnaryOperator示例

UnaryOperator示例 在Java8中,UnaryOperator是一个参数接口,它继承自Function UnaryOperator接收一个参数,返回和参数同样类型的结果 UnaryOperator.java @FunctionalInterface public interface UnaryOperator<T> extends Function<T, T> { } Function接收任意类型的类型,返回任意类型的结果 Function.java @Func

春风落叶的博客 3063

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JAVA8中的UnaryOperator

java8 中引入的函数式编程之一。 以ArrayList为例。 List&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;(); for (int i = 0; i &lt; 10; i++) { list.add(i); } list.replaceAll(x -&gt; x + 10); ...

kuma的博客 783

lambda表达式函数接口_函数Lambda表达式中UnaryOperator的示例

Java 8 Lambda表达式的实现需要介绍一些具有深奥名称的新接口,这些接口可能会对没有任何函数式编程经验的开发人员造成一定的威胁。 功能性UnaryOperator接口就是这样的领域。 它可能在学术上被命名,但是就其目的和实现而言却非常简单。 一元运算符的功能 UnaryOperator接口的功能是获取一个对象,对其执行某些操作,然后返回相同类型的对象。 这就是函数的一元性质...

服务器编程交流平台 545

Java学习笔记之UnaryOperator

UnaryOperator继承Function,同样是JDK1.8中的新特性。功能就是:对数据进行操作,生成一个与同类型对象。 方法只有一个static UnaryOperator identity(),该方法返回一个UnaryOerator对象,并且apply()方法中直接返回范型对象。 static &lt;T&gt; UnaryOperator&lt;T&gt; identity() { ...

楊帥 5718

JAVA8中Predicate,Consumer,UnaryOperator,Function接口的应用

笔者平时时间有限,直接贴代码,关于几个接口的差别,可以查看这两篇文章 感受lambda之美,推荐收藏,需要时查阅 https://juejin.im/post/5ce66801e51d455d850d3a4a Java8 函数式编程读书总结 https://juejin.im/entry/5912bbe0a0bb9f0058b485d6 <T> List&lt...

weixin_30776863的博客 237

Java8函数式接口详解

Java8函数式接口 接口 参数 返回 中文 实例 Supplier None T 提供者 工厂方法创建对象 Consumer T None 消费者 Predicate T boolean 判断/谓词 Function T R 函数 一、Supplier 接口 Supplier 接口代表一个结果的提供者。 Supplier 接口是用来生成数据的,数据

swadian2008的博客 1658

Java8中的函数式接口(你知道几个?)

Java8 函数式接口1. Supplier 2. Consumer 3. Function 4. UnaryOperator 5. BiFunction 6. Predicate

Lifelong learning 7349

一元运算符的使用java程序_Java函数式编程之UnaryOperator 一元操作符

描述:一元运算,接受一个T类型参数,输出一个与入参一模一样的值源码:packagejava.util.function;/***Representsanoperationonasingleoperandthatproducesaresultofthe*sametypeasitsoperand.Thisisaspecializationof{@co...

weixin_42336892的博客 248

java8函数式编程接口_具有五个接口的Java主函数编程

许多开发人员在查看所有接受lambda表达式作为参数的新API时都会感到害怕,他们想知道他们将如何找出要使用的Java函数以及正确的语法。 java.util.functions包中列出了40多个功能接口,这些功能接口可能会使Java中的功能编程前景有些艰巨。 但是,仔细检查后,您会发现只需要熟悉五到六个实际功能,即: 功能 消费者 供应商 谓词 和一元歌剧 基本...

服务器编程交流平台 335

java 8 biconsumcr_java8新特性——四大內置核心函數式接口

在前面幾篇簡單介紹了一些Lambda表達式得好處與語法,我們知道使用Lambda表達式是需要使用函數式接口得,那么,豈不是在我們開發過程中需要定義許多函數式接口,其實不然,java8其實已經為我們定義好了4類內置函數式接口,這4類接口其實已經可以解決我們開發過程中絕大部分的問題,只有一小部分比較特殊得情況需要我們自己去定義函數式接口,本文就簡單來學習一下java8內置得4大核心函數式接口。一、Co...

weixin_33269743的博客 393

java 8 biconsumcr_java8 四大内置核心函数式接口

其他补充接口: 一、Consumer:消费型接口(void accept(T t))来看一个简单得例子: 1 /**2 * 消费型接口Consumer3 */4 @Test5 public void test1 () {6 consumo(500, (x) -> System.out.println(x));7 }89 ...

weixin_30230059的博客 121
上一篇: Java-8-Supplier
下一篇: Java-8-Function
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值