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值 –