首页 > 解决方案 > 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 声明为变量以将总和放入其中。

标签: java

解决方案


您可以使用一个泛型方法,该方法采用要求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

这允许该方法摆脱特定于类型的“加法”逻辑(因此可以连接字符串列表、添加数字等。


推荐阅读