我上课时说public class Item {
int price;
String name;
// getters and setters
}
我有1000个或更多的对象(只是示例)。
每件商品都有不同的价格。所有这些项目对象都在List<Item>
我的要求是获得总价格(即第1项到第n项的价格)。
是否有任何实用程序或方法可以获得特定字段的总计(即所有项目的总价格)。我只给List,ClassName和fieldName我得到的总数?我知道我们可以通过遍历列表获得总数,调用get方法添加所有内容并存储在某个变量中。?
提前致谢。
答案 0 :(得分:2)
AFAIK不在标准JDK中,但在许多现有库中都有这方面的功能。例如,使用lambdaj,您应该可以执行sumFrom(objects, on(Object.class).getField())
答案 1 :(得分:2)
我刚刚编写了一个简单的方法来计算列表中某些属性的总和:
public static <E> Integer sum(List<E> obejcts, String propertyName) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Integer sum = 0; for (Object o: obejcts) { sum += (Integer)PropertyUtils.getProperty(o, propertyName); } return sum; }
为此,我使用javabeans技术。您可以直接从apache site下载所需的库。
以下是使用它的示例:
公共类MyObject {
private int x;public MyObject(){ }
public int getX(){return x; }
public void setX(int x){this.x = x; }
}
计算总和:
List<MyObject> l = new ArrayList<MyObject>(); ... try { int a = sum(l,"x"); System.out.print(a); } catch (IllegalAccessException e) { ...