Lambda 表达式和高阶函数

2023-11-22

如何使用带有闭包的 Java 8 编写支持将函数作为参数并返回函数作为值的方法?


在 Java Lambda API 中,主类是java.util.function.Function.

您可以像使用所有其他引用一样使用对此接口的引用:将其创建为变量,将其作为计算结果返回,等等。

这是一个非常简单的示例,可能会对您有所帮助:

    public class HigherOrder {

        public static void main(String[] args) {
            Function<Integer, Long> addOne = add(1L);

            System.out.println(addOne.apply(1)); //prints 2

            Arrays.asList("test", "new")
                    .parallelStream()  // suggestion for execution strategy
                    .map(camelize)     // call for static reference
                    .forEach(System.out::println);
        }

        private static Function<Integer, Long> add(long l) {
            return (Integer i) -> l + i;
        }

        private static Function<String, String> camelize = (str) -> str.substring(0, 1).toUpperCase() + str.substring(1);
    }

如果您需要传递超过 1 个参数,请查看compose方法,但其使用相当棘手。

总的来说,我认为 Java 中的闭包和 lambda 基本上是语法糖,它们似乎不具备函数式编程的所有功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lambda 表达式和高阶函数 的相关文章

  • 无论线程如何,对象是否总是能看到其最新的内部状态?

    假设我有一个带有简单整数计数变量的可运行对象 每次可运行对象运行时该变量都会递增 该对象的一个 实例被提交以在计划的执行程序服务中定期运行 class Counter implements Runnable private int coun
  • JAVA 中的 Composer 相当于什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前从 PHP 转向 java 有没有类似的工具composer https getcomposer org 在 PHP 中用于 JAV
  • 垂直 ViewPager 中的动画

    我需要垂直制作这个动画ViewPager https www youtube com watch v wuE 4jjnp3g https www youtube com watch v wuE 4jjnp3g 这是我到目前为止所尝试的 vi
  • 绘制平滑曲线

    我想创建更平滑的曲线 而不仅仅是线角 这是我现在画的图 这是我的代码 case FREEHAND float pts float ptk ptk new float 2 imageMatrix invert inv if mCurrentS
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • 但是创建静态实用方法不应该被过度使用吗?如何避免呢? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 随着时间的推移 java项目中引入了许多实用方法来完成更复杂和简单的任务 当使用静态方法时 我们在代码中引入了紧密耦合 这使得我们的代
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • 如何在Netbeans中设置JList的ListModel?

    我在 Netbeans IDE 的帮助下设计了一个 Swing GUI 该 GUI 包含一个 JList 默认情况下 它使用 QAbstractListModel 将其作为 JList 构造函数中的参数传递以创建该 JList 我想在 Ne
  • 避免 @Secured 注释的重复值

    我正在尝试使用以下方法来保护我的服务方法 Secured如下 public interface IUserService Secured ROLE ROLE1 ROLE ROLE2 ResponseEntity saveUser Creat
  • 在Java中如何将字节数组转换为十六进制?

    我有一个字节数组 我希望该数组的每个字节字符串转换为其相应的十六进制值 Java中有没有将字节数组转换为十六进制的函数 byte bytes 1 0 1 2 3 StringBuilder sb new StringBuilder for
  • 错误膨胀类 android.support.design.widget.NavigationView [启动时崩溃]

    该应用程序应该有一个导航抽屉 可以从左侧拉出并显示各种活动 但是一旦将导航栏添加到 XML Activity homescreen 文档中 应用程序一启动就会崩溃 主屏幕 java package com t99sdevelopment c
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • 使用 Guava Ordering 对对象列表进行多条件排序

    我有一个类无法实现可比较 但需要根据 2 个字段进行排序 我怎样才能用番石榴实现这一目标 假设班级是 class X String stringValue java util Date dateValue 我有一个清单 List
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • Java 8 方法签名不一致

    Java 8 为我们提供了具有很长签名的新方法 如下所示 static
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 获取 Future 对象的进度的能力

    参考 java util concurrent 包和 Future 接口 我注意到 除非我弄错了 只有 SwingWorker 实现类才能启动冗长的任务并能够查询进度 这就引出了以下问题 有没有办法在非 GUI 非 Swing 应用程序 映
  • Spring - 如何在不匹配列名的情况下使用 BeanPropertyRowMapper

    我正在开发一个应用程序 该应用程序已使用行映射器从纯 JDBC 转换为 Spring 模板 我遇到的问题是数据库中的列与属性名称不匹配 这阻止我使用BeanPropertyRowMapper容易地 我看到一些关于在查询中使用别名的帖子 这会
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在

随机推荐

  • 如何从日历中获取所有事件(Swift)

    我对 Swift 有点陌生 但真的很感兴趣 我想获取我存储在名为 工作 的日历中的所有事件 并将它们显示在表视图中 我一直在寻找这样的问题 但那里显示的代码似乎有点旧并且不能真正工作 我怎么做 tableView 应该能够显示标题 开始日期
  • 比较 object.Value = Null 不会产生预期结果

    所以我有一个令人沮丧的简单问题 但我似乎无法解决 If Me Bank Credit Value Null Then Me Bank Credit Value 0 End If 基本上 我有一个未绑定的框 用户可以在其中输入数据 然后单击按
  • toDateString() 减少我的日期

    对于以下代码 var d new Date 2013 07 01 console log d toDateString 它输出 Sun Jun 30 2013 比输入的时间少一天 物体发生了什么 实际存储的日期是什么 日期被解析为 UTC
  • 为什么模型绑定在我的 POST 操作方法中不起作用?

    我对 MVC 有一个非常奇怪的问题 我的模型总是提交为空 这可能真的很简单 但我就是找不到问题所在 我的模型看起来像这样 public class LoginModel public string Username public strin
  • 如何将 HiveQL 查询的结果输出到 CSV?

    我们希望将 Hive 查询的结果放入 CSV 文件中 我认为命令应该如下所示 insert overwrite directory home output csv select books from table 当我运行它时 它说它已成功完
  • 如何使用自定义IPasswordHasher?

    我实现了 IPasswordHasher public class MyPasswordHasher IPasswordHasher public string HashPassword string password using SHA2
  • Android Studio 像素化预览

    将 Android studio 更新到版本 3 1 2 后 出现预览图像像素化 模糊的问题 谁能帮我解决这个问题吗 这就是图像的渲染方式 我在 Android Studio 3 3 中遇到了同样的问题 但幸运的是我已经找到了解决方案 您必
  • C# 中两个列表相交

    我有两个清单 List
  • 是如何实现的?

    C 没有 据我所知 重载或模板 对吧 那么 在普通的 C 语言中如何存在一组与类型无关的同名函数呢 通常的编译时技巧会涉及一大堆宏 不是吗 关于它在 GCC 中如何工作有一个很好的解释here 另外 如果有人能解决中等难度的练习 我很想知道
  • 更快的排列生成器

    我为 Scala 列表编写了一个排列生成器 它生成给定列表的所有排列 到目前为止 我已经得到以下基于这个 Haskell 实现 我认为它比我尝试过的其他几个选项更有效 有什么方法可以提高效率 或者我已经涵盖了所有基础吗 For each e
  • 通过Curl/PHP查询API

    我正在查看 Parse com REST API 并使用 PHP 使用的 Curl 包装器进行调用 原始 Curl 代码 有效 curl X GET H X Parse Application Id myApplicationID H X
  • Struts2 文件上传最大大小

    我需要上传最多 10 MB 的文件 我使用了以下内容 在我的 struts xml 中 我配置如下
  • 让 VB6 显示哪个组件没有安装设计时许可证

    我继承了一个我正在尝试 制作 的 VB6 项目 构建在 制作 EXE 步骤中失败 并出现许可错误 License information for this component not found You do not have an app
  • C# 代码在后台以静默模式运行我的 installer.exe 文件,[重复]

    这个问题在这里已经有答案了 我有这个 C 代码 string desktopPath Environment GetFolderPath Environment SpecialFolder Desktop ProcessStartInfo
  • mysql中的同步存储过程执行

    我有一个存储过程mysql也就是说 执行需要同步的任务 这样 如果两个应用程序调用存储过程 则只有一个应用程序可以访问一段代码来执行该任务 而另一个应用程序将被阻止 直到第一个应用程序完成任务 DELIMITER CREATE PROCED
  • Visual C++:#include 来自同一解决方案中其他项目的文件

    我正在使用 Visual C 开发游戏 我在单独的项目中有一些组件 并设置了项目依赖项 如何 include 来自不同项目的头文件 我不知道如何在另一个项目中使用一个项目中的类 编译器的设置 在您想要 include 头文件的项目中anot
  • 如何在 Scala 中使用正则表达式进行模式匹配?

    我希望能够找到单词的第一个字母与组中的一个字母 例如 ABC 之间的匹配项 在伪代码中 这可能看起来像 case Process word gt word firstLetter match case a c A C gt case gt
  • 在 R markdown 中使用内联带空格的变量名称

    我怎样才能包含内联R引用包含空格或其他异常字符的变量名的代码 实际用例是Pr gt F 反引号是解决方案简单地R脚本 但当代码内联在 Markdown 文档中时它们似乎不起作用 这是一个例子 r df lt data frame mydat
  • 如何针对特定查询优化表?

    您使用哪些模式来确定频繁查询 如何选择优化因素 人们可以做出哪些类型的改变 这是一个很好的问题 虽然相当广泛 但也并不更糟 如果我理解你的意思 那么你是在问如何从头开始解决优化问题 首先要问的问题是 是否存在性能问题 如果没有问题 那么就完
  • Lambda 表达式和高阶函数

    如何使用带有闭包的 Java 8 编写支持将函数作为参数并返回函数作为值的方法 在 Java Lambda API 中 主类是java util function Function 您可以像使用所有其他引用一样使用对此接口的引用 将其创建为