Java 如何选择特定字段并使用JDO对该字段进行合计

Java 如何选择特定字段并使用JDO对该字段进行合计,java,google-app-engine,jdo,Java,Google App Engine,Jdo,我只想做一个简单的函数,用相同的名字求和 我已将JDO映射为如下所示: costName Cost food 10 food 10 water 5 food 10 total of food 30 total of water 5 通过这个代码,我得到了所有这个例子的总和35 int totalsum=0; int sumCap=0; for (JDO total : table) { totalsum +=

我只想做一个简单的函数,用相同的名字求和

我已将JDO映射为如下所示:

costName    Cost     
food        10 
food        10
water       5
food        10

total of food 30
total of water 5
通过这个代码,我得到了所有这个例子的总和35

int totalsum=0;
int sumCap=0;
for (JDO total : table) {

     totalsum += total.getCost() ;

}
我如何计算食物或/和水的成本

应该很简单,但我不明白

Map<String, Integer> values = new HashMap<>();
for (JDO total : table){
   String name = total.getCostName();
   Integer val = values.get(name);
   if (val == null) val = 0;
   val += total.getCost();
   values.put(name, val);
}
int total = values.get("food");

上面的内容计算了一次过程中的所有总数,然后允许您检索所需的任何数据。您还可以在循环中查找特定名称,只添加匹配的值。

虽然某些JDO实现支持“分组依据”,但GAE不支持AFAIK。看对话帖谢谢你的回答!!但是没有HashMap也可以吗?我试过你的代码,但netbeans无法编译它,因为:源代码1.5不支持菱形运算符使用源代码7或更高版本我应该怎么做?我可以执行一些JDO查询,首先选择CostName是食物的所有位置,然后执行for。我尝试了这样的查询:ListcostFood=List pm.newQueryJDO.class,capitolo==alimentari.execute;但它给了我所有的总数。不幸的是,我HasMap不习惯在我的jspI工作。根据你的建议,我不得不带走操作员!