MyObject structure is:
public class MyObject {
String gender;
String state;
int quantity;
int Salary;}
我有以下功能。它允许我在我的对象的性别和状态维度内汇总数据:计算平均值,同时汇总数据
private static Collection<MyObject> aggregate(List<MyObject> objects) {
int nombre=0;
Map<String, MyObject> map = new HashMap<String, MyObject>();
for (MyObject current : objects) {
String key = String.format("%s:%s", current.gender, current.state);
MyObject aggregated = map.get(key);
if (aggregated == null) {
aggregated = new MyObject();
aggregated.setGender(current.getGender());
aggregated.setState(current.state);
map.put(key, aggregated);
}
if(current.getSalary()!=0)
nombre+=1;
aggregated.setQuantity(aggregated.getQuantity() + current.getQuantity());
aggregated.setSalary((aggregated.getSalary() + current.getSalary())/nombre);
}
return map.values();
}
我在寻找获得聚合数据的平均工资。 “nombre”属性有问题。
其实它给了我下面的结果:agregation后
element : 1 M 40 1200
element : 1 F 35 2000
element : 1 M 20 200
element : 1 M 80 300
element : 1 F 35 2000
内容:
`element : 1 M 140 333
element : 1 F 70 2000`
但是我期待: element : 1 M 140 566 element : 1 F 70 2000
如果有什么不对的地方,你需要提供一些东西;) - 严重的是,更具体:什么是错的?你得到的任何错误?不希望的输出(如果是这样,那么你期望什么,你会得到什么)? – Thomas
'current.getSalary()'返回什么? – 2016-03-04 14:44:39
@托马斯没有得到所需的输出。 正如你所说,我想在计算所有工资之后的平均值,同时getSalary()返回一个int值 –