当前位置: 首页 > 知识库问答 >
问题:

Java中什么时候使用标识函数?[副本]

潘向明
2023-03-14

我读了一些代码,遇到了function.identity(),我发现它类似于s->s。我不明白为什么和什么时候应该使用function.identity()。

我试图通过一个例子来理解,但它并没有澄清我的问题:

public static void main(String[] args){
        Arrays.asList("a", "b", "c")
          .stream()
          .map(Function.identity())
          //.map(str -> str)   //it is the same as identity()       
          .forEach(System.out::println);
        return;
    }

在打印带有和不带有映射的列表元素时,我得到的结果是相同的:

a
b
c

谢谢

共有1个答案

左华灿
2023-03-14

当API强制您传递一个函数时,它很有用,但您想要的只是保持原来的值。

例如,假设您有一个,您希望将其转换为映射 。您可以使用

stream.collect(Collectors.toMap(Country::getIsoCode, Function.identity()))

collectors.tomap()需要一个函数将国家变成地图的键,另一个函数将它变成地图的值。由于您希望将国家本身存储为值,所以使用identity函数。

 类似资料:
  • 问题内容: 嗨,我想知道何时才是使用htmlspecialchars()的适当位置。是在将数据插入数据库之前还是从数据库中检索数据时? 问题答案: 仅在将数据回显为HTML时才应调用此方法。 不要将转义的HTML存储在数据库中;它只会使查询更烦人。 数据库应存储您的实际数据,而不是其HTML表示形式。

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 为什么将某些代码模式(当存在于JVM内部类中时)转换为内在函数,而将相同的模式从我自己的类中调用时却不是。 例: 从Integer中调用bitCount函数时,bitCount(i)将转换为内部函数。但是,当复制到我的班级然后调用时,执行将花费更长的时间。 比较 问题答案: 答案很简单:以这种方式定义内在函数,因为存在一种更快,本机的方法来获取函数结果,并且可以在指定映射的情况下使用该

  • 有人能给我一个例子,我如何在下面的代码中使用Double吗?

  • 关于什么时候使用Docker而不是VM的,有什么指导方针吗?(反之亦然) 在我看来,像NGINX、Apache或Redis这样的服务应该是docker,但我不确定是否应该在HPC环境中使用ElasticSearch docker。 Docker总是比VM好吗?

  • 问题内容: 我目前正在Java课程中学习有关类继承的信息,我不知道何时使用该调用? 编辑: 我发现使用此代码示例: 因此,我知道在这里,你必须使用它来访问超类中的变量。但是,在其他情况下,该怎么;办?在其自己的? 问题答案: 精确 调用始终是多余的。它明确地在做否则会隐式地做的事情。这是因为如果你省略对超级构造函数的调用,则无论如何都将自动调用无参数的超级构造函数。并不是说这是不好的风格。有些人喜