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

从数组流传输时,为什么不能将整数映射到字符串?

郤飞英
2023-03-14
问题内容

这段代码有效(取自Javadoc):

List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
String commaSeparatedNumbers = numbers.stream()
    .map(i -> i.toString())
    .collect(Collectors.joining(", "));

这是无法编译的:

int[] numbers = {1, 2, 3, 4};
String commaSeparatedNumbers = Arrays.stream(numbers)
    .map((Integer i) -> i.toString())
    .collect(Collectors.joining(", "));

IDEA告诉我,“ lambda表达式中的返回类型字符串不兼容”。

为什么呢 以及如何解决?


问题答案:

Arrays.stream(int[])创建一个IntStream,而不是一个Stream<Integer>。因此,在将映射到对象时,您需要调用mapToObj而不仅仅是。map``int

这应该按预期工作:

String commaSeparatedNumbers = Arrays.stream(numbers)
    .mapToObj(i -> ((Integer) i).toString()) //i is an int, not an Integer
    .collect(Collectors.joining(", "));

您也可以这样写:

String commaSeparatedNumbers = Arrays.stream(numbers)
    .mapToObj(Integer::toString)
    .collect(Collectors.joining(", "));


 类似资料:
  • 问题内容: 问题: 给定一个字符串数据数组 我想要一个返回索引数据集的函数 和一个查询表 这样 是真的。请注意,和都可以进行排列,以使上述内容成立并且很好(即,的顺序不必等于中的首次出现的顺序)。 解决方法: 我目前有以下慢速解决方案 有更快的方法吗?我觉得我没有在这里充分利用numpy的潜力。 问题答案: 您可以使用以下参数: 如果愿意,可以从以下两个数组重建原始数组: 如果使用熊猫,将实现相同

  • 控制台输出 编辑:

  • 我正试图利用谷歌电子表格(谷歌脚本)中的地图功能,使用API从Bittrex获取我的帐户硬币余额。这是我的JSON对象: 理想情况下,我希望根据结果中的键和使用每个对象数据的基础行自动填充标题行。我看到了spme解决方案如何为每种或更复杂的方式使用。但我想这可以通过映射来实现。下面是我如何映射顶行,但不知道如何映射值: 谷歌电子表格中的预期输出为

  • 我想通过数组映射,但我得到一个错误:TypeError: locationAddress.map不是一个函数 我是新来的反应和反应钩。我一直试图简化数组,但运气不好。知道为什么这不起作用吗? 编辑:到目前为止,我尝试了答案中的所有更改,但错误仍然存在。我包括了更多的代码和包。json文件。我尝试停用一些函数,如useEffect,现在只有在我尝试键入要映射的输入字段时才会显示错误。 找到解决方案:

  • 问题内容: 因此基本上,用户是从扫描仪输入中输入序列。 等等。 它可以是任意长度,并且必须是整数。 我想将输入的字符串转换为整数数组。 所以会,就等 有什么提示和想法吗?我正在考虑实现获取先前的编号并将它们解析在一起,并将其应用于数组中的当前可用插槽。但是我不太确定如何编写代码。 问题答案: 您可以从扫描仪中读取整个输入行,然后将其分开,然后得到一个,将每个数字解析为与索引一对一匹配的…(假设输入

  • 假设我有一个包含一些对象的数组。 出于好奇,是否可以将流映射到它们在原始数组中的位置?例如,在这种情况下将其映射到1,2,3,4? 我想这样的事情是行不通的。