当前位置: 首页 > 面试题库 >

Map方法参考链

郏博瀚
2023-03-14
问题内容

我正在使用Twitter4J。但是我要问的问题比较笼统。我想访问给定推文的用户ID。目前,我有以下两种选择:

//Option 1
stream.map(status -> status.getUser().getId())
      .forEach(System.out::println);

//Option 2:
stream.map(Status::getUser)
      .map(User:getId)
      .forEach(System.out::println);

我不喜欢第一个选项中的lambda表达式,也不喜欢在第二个选项中被迫调用两个maps。有没有办法建立方法引用链?我知道这Status::getUser::getId行不通,但是我想知道是否还有其他选择。


问题答案:

不,这是两种方法。其他任何事情最终都只会变得不清楚。

但是,自您提出要求以来,这里有一些选择。

static<T,U,R> Function<T,R> chain(
        Function<? super T, ? extends U> f1,
        Function<? super U, ? extends R> f2) {
    return t -> f2.apply(f1.apply(t));
}

stream.map(chain(Status::getUser, User::getId))

要么

static<T,R> Function<T,R> func(Function<T,R> f) {
    return f;
}

stream.map(func(Status::getUser).andThen(User::getId))


 类似资料:
  • 方法引用有助于通过名称指向方法。 使用“::”符号描述方法参考。 方法参考可用于指出以下类型的方法 - 静态方法 实例方法 使用new运算符的构造函数(TreeSet :: new) 方法参考示例 使用您选择的任何编辑器创建以下Java程序,例如C:\> JAVA。 Java8Tester.java import java.util.List; import java.util.ArrayList

  • 问题内容: 假设有一个典型的Java Bean: 我想在BiConsumer的帮助下创建一种更抽象的调用设置器的方式: 有没有一种方法,以取代拉姆达用链式方法的参考,像或者还是其他什么东西? 问题答案: 不,方法引用不支持链接。在您的示例中,尚不清楚这两种方法中的哪种应接收第二个参数。 但是如果你坚持下去…… … 该方法的命名建议将其视为已存在(此处为),并在其第一个参数之前添加一个函数(此处为)

  • 本文档描述了QuerySet API的详细信息。它建立在模型和数据库查询指南的基础上,所以在阅读本文档之前,你也许需要首先阅读这两部分的文档。 本文档将通篇使用在数据库查询指南中用到的Weblog 模型的例子。 何时对查询集求值(要写到程序里的字段麻烦不要自作聪明翻译谢谢) 在内部,可以创建、过滤、切片和传递查询集而不用真实操作数据库。在你对查询集做求值之前,不会发生任何实际的数据库操作。 你可以

  • 问题内容: 可以将lambda表达式中的元素完成的操作链接/连接起来,如下所示: 有没有办法通过方法引用来做到这一点?像这样: 我知道我可以在四个单独的调用中执行此操作(它们也可以执行更多操作,即更改值): 我什至不能做这样简单的事情: 问题答案: 通过功能接口的默认方法可以链接。但是“问题”在于,当您返回合成表达式的右侧时,推理引擎没有足够的信息来确定左侧是相同的功能接口。 要提供该信息,您必须

  • 助手代码实用方法 这些方法会帮你更轻松地实现自定义助手代码。 Handlebars.SafeString(string) 防止 string 在模版渲染时转义。 new Handlebars.SafeString("<div>HTML Content!</div>"); 当构建将会被标记为安全的字符串时,为安全起见,任何外部内容都应该使用 Handlebars.escapeExpression

  • 问题内容: 我想为以下类找到方法“ get”的所有调用方: 因此,我突出显示了文本“ get”并右键单击“ References-project”。但是它返回了对每个称为“ get”的方法的引用,而不仅仅是对com.zzz.zzz.zzz.services.EMF.get()的引用。 这是蚀食吗?如何使Eclipse仅显示对com.zzz.zzz.zzz.services.EMF.get()的引用