2012-11-21 20 views
5

Wenn ein Objekt car eine Eigenschaft fuel hat, und ich habe eine Liste dieser Objekte cars: Wie kann ich am besten die Summe dieser Eigenschaft getCarsFuel() aller Objekte in der Liste berechnen?Wie berechnet man am besten die Summe einer Objekteigenschaft?

class CarStock { 
    List<Car> cars; 

    public int getCarsFuel() { 
     int result = 0;  

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

     return result; 
    } 
} 

class Car { 
    int fuel; 
} 

Gibt es bessere Möglichkeiten, oder kann es nicht weniger "Boilerplate" getan werden. könnte ich etwas wie sum(List<T> list, String property) ->sum(cars, "fuel") ?

import static ch.lambdaj.Lambda.*; 

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

Für einige weitere Beispiele dafür, wie lambdaj zu verwenden, finden Sie in der Features Seite auf dem lambdaj wiki:

+1

Sicher könnten Sie eine Hilfsmethode wie Sie Vorschlag schreiben. Aber es gibt keine integrierte Möglichkeit, dies in Java zu tun. –

+2

@SamIam: mit C# ist nicht immer eine akzeptable Lösung, Sie können leicht für Groovy gehen und M $ vergessen. – Jack

Antwort

8

Wenn Sie lambdaj verwenden können, können Sie so etwas wie schreiben.

+0

Genau das suche ich! – membersound

+1

Aber es gibt einen großen Mangel an Wirksamkeit bei dieser Methode. Siehe http://stackoverflow.com/questions/25343897/gross-lack-of-efficacy-in-using-lambdaj-over-iteration –

Verwandte Themen