java - java中的泛型方法来总结给定列表中的所有值,无论它是String,int,double
问题描述
我该如何写这个方法?
public static <T> void adds(List<T> k,int i)
{
T y;
List<T> g = new ArrayList<T>();
for(i=0;i<5;i++) {
y+= k.get(i));}
}
}
我应该用什么来计算总和?
我尝试将类型 T 声明为变量以将总和放入其中。
解决方案
您可以使用一个泛型方法,该方法采用要求BinaryOperator<T>
和的类型并调用它以添加减少操作:
public static <T> T sum(List<T> list, BinaryOperator<T> adder) {
return list.stream().reduce(adder).get();
}
你可以像这样使用它:
List<String> s = Arrays.asList("1", "2", "3");
sum(s, (s1, s2) -> String.valueOf(Double.parseDouble(s1) + Double.parseDouble(s2))); //"6.0"
sum(Arrays.asList(1, 2, 3, 4), (a, b) -> a + b); //10
这允许该方法摆脱特定于类型的“加法”逻辑(因此可以连接字符串列表、添加数字等。
推荐阅读
- android - 如何在文本到语音中使用男性声音?
- python-3.x - 逐列特定值计数
- c# - 反序列化后提交更改不起作用
- python - 使用 SQLAlchemy 获取查询中的外键计数
- html - 无法在 iOS Safari 上预加载第一个视频帧?
- vuforia - 错误 UnityEngine.XR.WSA.Input.InteractionManager::GetCurrentReading_Internal
- python - 无法将插座连接到蓝牙配对设备
- c# - 如何通过提供方法名称作为字符串来模拟服务方法
- tensorflow - 如何以有效的方式标记我的图像分类数据集?
- pandas - 如何通过查找另一个字符串位置来对数据框中的字符串进行切片,并且每行的位置值都不同?