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

将IntStream转换为Map

鲁靖
2023-03-14

我有一个IntStream,并希望该流的每个元素都进行一些计算并将它们返回Map,其中键是int值,值是该计算的结果。我写了以下一段代码:

IntStream.range(0,10)
    .collect(
        Collectors.toMap(Function.identity(), i -> computeSmth(i)));

其中,计算第m个(整数a)。我发现下一个编译器错误

method collect in interface java.util.stream.IntStream cannot be applied to given types;
 required: java.util.function.Supplier<R>,java.util.function.ObjIntConsumer<R>,java.util.function.BiConsumer<R,R>
 found: java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.Map<java.lang.Object,java.lang.String>>
 reason: cannot infer type-variable(s) R
   (actual and formal argument lists differ in length)

我做错了什么?

共有1个答案

白和泽
2023-03-14

这是我的代码,它会为你工作。

功能参考版本

public class AppLauncher {

public static void main(String a[]){
    Map<Integer,Integer> map = IntStream.range(1,10).boxed().collect(Collectors.toMap(Function.identity(),AppLauncher::computeSmth));
    System.out.println(map);
}
  public static Integer computeSmth(Integer i){
    return i*i;
  }
}

Lambda表达式版本

public class AppLauncher {

    public static void main(String a[]){
        Map<Integer,Integer> map = IntStream.range(1,10).boxed().collect(Collectors.toMap(Function.identity(),i->i*i));
        System.out.println(map);
    }
}
 类似资料:
  • 问题内容: 在Java 8流API中,调用任何对象都会返回一个包含所有字符的对象。 将返回的对象转换回a 的正确方法是什么?调用会给我一个,任何构造函数都不接受。 问题答案: 您可以使用,然后使用构造函数。正如返回UTF-16代码单元所指定的那样,这并不完全令人满意,基本上是: 返回此序列的int零扩展char值的流。映射到代理代码点的任何字符都将通过未解释传递。 使用反而会更加保持与此构造,其预

  • 我正在查看的文档,我看到了方法,但无法直接转到 是否有方法将转换为?

  • 本文向大家介绍Java中将字符串(String)转换为IntStream,包括了Java中将字符串(String)转换为IntStream的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串- 现在,将以上内容转换为IntStream- 示例 以下是在Java中将String转换为IntStream的程序- 输出结果

  • 本文向大家介绍Java 中将 IntStream 转换为 String 的程序,包括了Java 中将 IntStream 转换为 String 的程序的使用技巧和注意事项,需要的朋友参考一下 首先创建一个IntStream- 现在,将此IntStream转换为String- 示例 以下是在Java中将IntStream转换为String的程序- 输出结果

  • 问题内容: 我正在尝试使用实例化对象流: 但是它说它不能转换成。 问题答案: 本类的方法映射s到更多的S,用(到),而不是对象。 通常,所有流的方法都将流的类型映射到自身,并映射到不同的类型。 尝试使用该方法,该方法改为使用(反对)。

  • 我试图使用一个来实例化一个对象流: 但是它说它不能将转换为。