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

如何使用Java Stream API使用流外部的值创建映射?

司寇高峯
2023-03-14
问题内容

我想要初始化a,Map<String, BigDecimal>并希望始终BigDecimal从流外部输入相同的值。

BigDecimal samePrice;
Set<String> set;

set.stream().collect(Collectors.toMap(Function.identity(), samePrice));

但是Java抱怨如下:

收集器类型中的toMap(Function,Function)方法不适用于参数(Function,BigDecimal)

为什么不能从外部使用BigDecimal?如果我写:

set.stream().collect(Collectors.toMap(Function.identity(), new BigDecimal()));

它会起作用,但这当然不是我想要的。


问题答案:

的第二个参数(如第一个参数)toMap(keyMapper, valueMapper)是一个函数,它接受流元素并返回映射的值。

在这种情况下,您想忽略它,因此您可以:

set.stream().collect(Collectors.toMap(Function.identity(), e -> samePrice));

请注意,由于相同的原因,您的第二次尝试将无效。



 类似资料:
  • 我看不出如何在函数式中做到这一点:map/hashmap不实现。 返回一个,我可以对其进行流式传输,但如何将新的添加到目标映射?

  • 我正在寻找第一次到流API的Java8。我尝试创建一个筛选器来从映射中删除元素。

  • 问题内容: 给定一个Person上具有(etc)方法的where,我该如何将其转换为通过调用获得的where ? 我会使用Java 8之前的版本 但我想使用流和lambda做到这一点。 我看不到如何以功能样式执行此操作:Map / HashMap不实现。 返回可以流式传输的,但是如何向目的地地图添加新的内容? 问题答案: 使用Java 8,您可以执行以下操作: 尽管使用Guava的Maps.tra

  • 问题内容: 我需要制作一个可以用外部jar文件编译和执行我的类的makefile。我有4个类;。 我还需要包括..这是我的制作文件 谢谢 问题答案: 您是指在Linux OS中制作Makefile吗? 检查一下-Makemakefile指南 http://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html 或这个-例子 http

  • 问题内容: 我在使用Laravel创建立面模型类时遇到了一些问题。我已经关注了http://laravel.com/docs/facades,但是我想我缺少了一些东西。 我创建了一个文件夹叫。在那个文件夹中,我有两个文件。 第一个文件(Foo.php): 第二个文件(FooFacade.php): 然后我将数组添加到中并运行和。 现在,当我尝试跑步时,我得到了。我究竟做错了什么? 问题答案: 步骤

  • 问题内容: 我已经完成了连接数据库(MySQL)的项目。现在,我要将项目导出为jar。但是我不知道如何包括其外部依赖项?在Eclipse中有什么方法可以做到这一点,还是应该为此使用任何脚本? 问题答案: 当你将项目导出为“可运行的jar”(在项目->导出->可运行的jar上单击鼠标右键)时,可以选择将所有依赖项打包到生成的jar中。它还有两种其他方式(请参见屏幕截图)来导出库,请在决定使用哪种打包