2

我有课说例如public class Item { int price; String name; // getters and setters } 我有这样的 1000 个或更多对象(只是示例)。每个项目都有不同的价格。List<Item>我的要求是获取总价(即列表中第 1 项到第 n 项的价格)。

是否有任何实用程序或方法可以让我获得特定字段的总价(即所有项目的总价)。我只是给List,ClassName和fieldName我得到总数吗?我知道我们可以通过遍历列表来获得总数,调用 get 方法将所有内容加起来并存储在某个变量中。?

提前致谢。

4

2 回答 2

2

AFAIK 不在标准 JDK 中,但在许多现有库中都有这方面的功能。例如使用lambdaj你应该能够做到sumFrom(objects, on(Object.class).getField())

于 2011-12-14T13:11:56.307 回答
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 站点下载所需的库。

这是使用它的示例:

公共类 MyObject {
私有 int x;

公共 MyObject() { }

公共 int getX() { 返回 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) {
...
于 2011-12-14T14:21:06.393 回答