java的数字求和_如何在java中对通用数字求和

class MyListOfNumbers>

{

public T sum()

{

return list_of_Ts.stream()

.sum();

}

}

关于T,我一无所知,只是它是一个数字,可以与“兄弟姐妹”(需要对东西进行排序…)进行比较.

显然,这是行不通的,并且不会以旧的Java方式(即循环)运行,因为据我所知,您根本无法做到T x = 0.

我认为这两种方法都不起作用,原因是相同的,并且T没有实现总和.此外,我读到它在空集上不起作用.

class MyListOfNumbers>

{

public T sum()

{

return list_of_Ts.stream()

.reduce(0, T::sum);

}

}

那该怎么办呢?

编辑:请考虑T可以是从Byte到BigDecimal的任何值,并将其强制为整数可能意味着丢失数据

解决方法:

传递累加器函数和标识值作为参数:

public T sum(T identity, BinaryOperator accumulator) {

return list_of_Ts.stream().reduce(identity, accumulator);

}

请注意,如果您希望避免在实际调用时传递这些参数,则可以创建静态方法来进行调用:

public static int intSum(MyListOfNumbers list) {

return list.sum(0, (a, b) -> a + b);

}

public static double doubleSum(MyListOfNumbers list) {

return list.sum(0, (a, b) -> a + b);

}

// etc.

标签:java-8,generics,java,lambda

来源: https://codeday.me/bug/20191111/2018949.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值