2012-11-21 6 views
5

Se un oggetto car ha una proprietà fuel, e io ho un elenco di questi oggetti cars: come posso calcolare meglio la somma di questa proprietà getCarsFuel() di tutti gli oggetti nell'elenco?Come calcolare al meglio la somma della proprietà di un oggetto?

class CarStock { 
    List<Car> cars; 

    public int getCarsFuel() { 
     int result = 0;  

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

     return result; 
    } 
} 

class Car { 
    int fuel; 
} 

Ci sono modi migliori, o non può essere fatto meno "boilerplate". Potrei immaginare qualcosa come sum(List<T> list, String property) ->sum(cars, "fuel") ?

+1

Certo, potresti scrivere un metodo di supporto come il tuo suggerimento. Ma non esiste un modo integrato per farlo in Java. –

+2

@ Samam: usare C# non è sempre una soluzione accettabile, puoi facilmente andare su Groovy e dimenticare M $. – Jack

risposta

8

Se è possibile utilizzare lambdaj, è possibile scrivere qualcosa di simile:

import static ch.lambdaj.Lambda.*; 

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

Per alcuni esempi di come utilizzare lambdaj, vedere la pagina Features sul wiki lambdaj.

+0

Questo è esattamente quello che sto cercando! – membersound

+1

Ma c'è una grande mancanza di efficacia in questo metodo. Si prega di fare riferimento a http://stackoverflow.com/questions/25343897/gross-lack-of-efficacy-in-using-lambdaj-over-iteration –

Problemi correlati