需要类似 getTotal(ClassName, ListOfObjectsOfClass, numericFieldOfClass)

发布于 2024-12-21 15:41:11 字数 352 浏览 2 评论 0原文

我有一个类,例如 public class Item { 国际价格; 字符串名称; // getter 和 setter } 我有这样 1000 个或更多的对象(只是例子)。 每件商品都有不同的价格。所有这些项目对象都在 List 中,我的要求是获取总价(即列表中第 1 项到第 n 项的价格)。

有没有任何实用程序或方法可以让我获得特定字段的总计(即所有商品的总价)。我只给出 List、ClassName 和 fieldName 我得到总数吗?我知道我们可以通过迭代列表来获得总数,调用 get 方法将所有内容相加并存储在某个变量中。?

提前致谢。

I have class say for example public class Item {
int price;
String name;
// getters and setters
}

I have such 1000 or more objects (just example).
For each item there is a different price. And All this item objects are in List<Item> my requirement is to get total price (i.e price for item 1 to nth item of the list).

Is there any utility or way by which i can get total for the particular field (i.e total price of all the items). I just give List, ClassName and fieldName I get the total? I know we can get the total by iterating through the list, call get method add all up and store in some variable.?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挖个坑埋了你 2024-12-28 15:41:11

我刚刚编写了一个简单的方法,它计算列表中一些属性的总和:

public static ; Integer sum(List objects, String propertyName) 抛出异常 
        非法访问异常, 
        调用目标异常, 
        NoSuchMethodException {
    整数和=0;
    for (对象 o: 对象) {
        sum += (Integer)PropertyUtils.getProperty(o, propertyName);
    }
    返回总和;
}

为此,我使用 javabeans 技术。您可以直接从 apache 站点 下载所需的库。

这是使用它的示例:

公共类 MyObject {
私有 int x;

公共 MyObject() {
}

public int getX() { 返回 x; }

public void setX(int x) { this.x = x; }

}

列表 l = new ArrayList();
...
尝试 {
int a = sum(l,"x");
System.out.print(a);
} catch (IllegalAccessException e) {
...

I have just written a simple method which calculates a sum of some properties in list:

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;
}

For this I use javabeans technology. You can download needed libraries directly from apache site.

Here's example of using it:

public class MyObject {
private int x;

public MyObject() {
}

public int getX() { return x; }

public void setX(int x) { this.x = x; }

}

And calculating sum:

List<MyObject> l = new ArrayList<MyObject>();
...
try {
int a = sum(l,"x");
System.out.print(a);
} catch (IllegalAccessException e) {
...
2024-12-28 15:41:11

AFAIK 不在标准 JDK 中,但许多现有库中有此功能。例如,使用 lambdaj 您应该能够执行 sumFrom(objects, on(Object .class).getField())

AFAIK not in the standard JDK, but there are functions for this in many existing libraries. For example with lambdaj you should be able to do sumFrom(objects, on(Object.class).getField())

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文