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

Java 1.7:Iterable之和

司寇凯
2023-03-14

我需要创建一个助手方法,该方法允许创建任何Iterable的和

 static Integer sum(Iterable<Integer> it) {
    Integer result = 0;
    for(T next : it) {
        result += next;
    }
    return result;
 }

然而,这种方法只适用于int,但我们也有double和long。因为不能有两个具有相同签名的方法(我们的编译器认为整数和(Iterable))

private static <T extends Number> T sum(Iterable<? extends T> it) {
    T result;
    for(T next : it) {
        result += next;
    }
    return result;
}

但是这个方法不会编译(原因:操作符=是未定义的对象,对象)。我能在这里做什么?我知道在C中你可以重载运算符,但在Java中不行。但是每个扩展数字的类都会重载=运算符。我能在这里做什么?

提前谢谢你。

共有3个答案

易瀚漠
2023-03-14

如果所有数字都是相同(未知)类型,那么您不需要检查每个元素,只需首先获取类型of,然后选择相应的循环来计算double、long、BigDecimal或BigInteger中的和。

萧霍英
2023-03-14

看看如何添加两个java。郎。数字?

你不知道你求和的数字的类型,所以要么用下一个。doubleValue(),如果您可以容忍精度损失,或者如果您想保持精度,请查看BigDecimal(使用字符串构造函数)。

孟承嗣
2023-03-14

如果数字不能是BigInteger或BigDecimal,可以尝试将其转换为double,并按如下方式求和:

double result = 0;
for (T number : it) {
    result += number.doubleValue();
}
 类似资料:
  • 问题内容: 我对所有有趣的迭代器都非常着迷,但是我感到困惑的是这两个函数之间的区别以及为什么存在。 两种功能有什么区别? 问题答案: 前者只能处理不可打包的迭代。后者可以处理无法完全解包的可迭代对象,例如无限生成器。 考虑 此外,仅拆箱操作是一项急切的,前期成本高的活动,因此,如果您的迭代有效果,则希望懒惰地进行评估,这是您的最佳选择。

  • 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。 具有iterable类型的集合可以通过新的for ... of循环来遍历。 for ... of循环是ES6引入的新的语法,请测试你的浏览器是否支持: 'use strict'; var a = [1, 2, 3];

  • 什么是迭代? 例子: for a in b.value(): pass for x, y in de.items(): pass 字符串也可以 for a in 'abcv': pass 如何判断是否可以迭代 请看代码 from collections import Iterable isinstance('abc', Iterable) True 这里就引出了

  • 我已经用MapStruct 1.1工作了几天,但还没有达到我所需要的。 我想做的是:我想将JPA实体映射到DTO,以便在Primefaces项目中实现更好的属性视图绑定。 所以我有我的实体如下: 病人JAVA 人JAVA 我想把这些实体画成这样: 耐心等待。JAVA 潘松多。JAVA 我编写了Mapper类和一个实用程序,就像GitHub上的官方示例中描述的那样(https://github.co

  • 我目前正在使用NodeJS尝试GraphQL,我不知道为什么在以下查询中出现此错误: 我不确定,如果我的是正确的,因为在任何例子中,我都看到他们使用了,但在我的情况下,我真的想返回一个用户对象,而不是用户数组。 我的代码: 错误: 因此,我的模式提供了一个字段,该字段返回正确的数据(console.log)。

  • 我对Java还很陌生,今天我试图理解迭代器的使用。 所以我有几个问题: > 为什么我需要实现Iterable呢?它只提供了一个为集合创建新迭代器的方法,但如果我想获取所有元素,我也可以使用普通的或增强的for循环。我已经读过这个问题:可迭代接口用于什么?还有更多,但他们只是说它允许你遍历所有元素,这又回到了我的问题。 如果我实现了Iterable,我也应该实现迭代器吗 因为这一个实际上提供了可用于