2012-11-21 45 views
5

如果一個對象car有一個屬性fuel,並且我有這些對象的列表cars:我怎樣才能最好地計算列表中所有對象的此屬性getCarsFuel()的總和?如何最好地計算一個對象的財產總和?

class CarStock { 
    List<Car> cars; 

    public int getCarsFuel() { 
     int result = 0;  

     for (Car car : cars) { 
      result += car.getFuel(); 
     } 

     return result; 
    } 
} 

class Car { 
    int fuel; 
} 

有沒有更好的方法,或不能做得更少的「樣板」。 我可以像sum(List<T> list, String property) - >sum(cars, "fuel")

+1

當然你可以寫一個幫助方法,比如你的建議。但是在Java中沒有內置的方法。 –

+2

@SamIam:使用C#並不總是一個可以接受的解決方案,您可以輕鬆使用Groovy並忘記M $。 – Jack

回答

8

如果你可以使用lambdaj,你可以寫這樣的:

import static ch.lambdaj.Lambda.*; 

List<Car> cars = ...; 
int result = sumFrom(cars).getFuel(); 

有關如何使用lambdaj,請參閱lambdaj維基Features頁一些例子。

+0

這就是我正在尋找的! – membersound

+1

但是這種方法有效性不足。請參閱http://stackoverflow.com/questions/25343897/gross-lack-of-efficacy-in-using-lambdaj-over-iteration –