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

JavaStream:解析减少函数中的字符串流

孙岳
2023-03-14

我有一串串弦

        Stream<String> st = Arrays.stream(new String[]{"10", "20", "30",  "40", "50"});

我想把它们转换成整数,然后用reduce方法求和。我正在以以下格式使用reduce:

        int result = st.reduce(0, (a, b)-> a + Integer.parseInt(b));

我得到这个错误:没有找到合适的方法来减少(int,(a, b)-

有没有关于如何重写reduce方法以使其工作的提示?


共有3个答案

韩嘉胜
2023-03-14

我想把它们转换成整数,然后用reduce方法求和。我正在以以下格式使用reduce:

为了你的启发(以及未来的需求),你可以这样做。

String[] data ={"10", "20", "30",  "40", "50"};
int sum = Arrays.stream(data).mapToInt(Integer::parseInt).sum();
System.out.println(sum);

印刷品

150
钱建本
2023-03-14

我没有使用reduce(),而是将其分为两个步骤:将字符串转换为int(作为int流),然后求和:

Stream.of("10", "20", "30", "40", "50").mapToInt(Integer::parseInt).sum()
束涵涤
2023-03-14
匿名用户

您需要提供一个组合器函数作为第三个参数才能使其工作:

int sum = Arrays.stream(new String[]{"10", "20", "30",  "40", "50"})
            .reduce(0, (a, b)-> a + Integer.parseInt(b), Integer::sum);

否则,您将获得不同风格的reduce(),它能够生成与流中元素类型相同的结果。

而且你不需要duce(),更好的方法是:

int sum = Stream.of("10", "20", "30",  "40", "50")
            .mapToInt(Integer::parseInt)
            .sum();

 类似资料:
  • 问题内容: 在Java中执行以下操作的最佳方法是什么。我有两个输入字符串 我需要从字符串中提取类型和数字。 在这种情况下,答案是type =“ a good”和number =“ 234” 谢谢 问题答案: 您可以使用正则表达式:

  • 本文向大家介绍解析C++中的字符串处理函数和指针,包括了解析C++中的字符串处理函数和指针的使用技巧和注意事项,需要的朋友参考一下 C++字符串处理函数 字符串连接函数 strcat 其函数原型为 strcat是string catenate(字符串连接)的缩写。该函数有两个字符数组的参数,函数的作用是:将第二个字符数组中的字符串连接到前面字符数组的字符串的后面。第二个字符数组被指定为const,

  • 我有一个输入表单,允许某人键入unicode字符。所以它可能是类似于“嘿,uF32A怎么了?如果我得到这个字符串,它将有一个子字符串“\uF32A”,我如何将其转换为字符“\uF32A”?

  • 我有一个字符串数组,如下所示: 拆分数组后,打印以下内容: 我得到的输出是: 我想要的是删除逗号、https和not'之类的单个字母的所有实例(在使用上面的方法之后)。所以我想以这个结束: 我试过像这样做replaceAll: 但这只是给了我相同的初始输出,没有任何变化。有什么想法吗?

  • Milo Yip 2016/9/27 本文是《从零开始的 JSON 库教程》的第三个单元解答编。解答代码位于 json-tutorial/tutorial03_answer。 1. 访问的单元测试 在编写单元测试时,我们故意先把值设为字符串,那么做可以测试设置其他类型时,有没有调用 lept_free() 去释放内存。 static void test_access_boolean() {

  • 问题内容: 我有一个将存储Number对象的列表。该列表将通过分析字符串列表来填充,其中每个字符串都可以表示Number的任何子类。 如何将字符串解析为通用数字,而不是特定的整数或浮点数? 问题答案: 数字不能实例化,因为它是抽象类。我建议传入数字,但是如果您设置为字符串,则可以使用任何子类来解析它们, 要么 @请参阅NumberFormat