2012-11-21 47 views
5

Nếu một đối tượng car có một thuộc tính fuel và tôi có danh sách các đối tượng này cars: làm cách nào tôi có thể tính toán tốt nhất tổng của thuộc tính này getCarsFuel() của tất cả các đối tượng trong danh sách?Làm thế nào để tính toán tốt nhất tổng tài sản của một đối tượng?

class CarStock { 
    List<Car> cars; 

    public int getCarsFuel() { 
     int result = 0;  

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

     return result; 
    } 
} 

class Car { 
    int fuel; 
} 

Có cách nào tốt hơn hoặc không thể thực hiện ít hơn "bản mẫu". Tôi có thể tạo hình ảnh giống như sum(List<T> list, String property) ->sum(cars, "fuel") ?

+1

Chắc chắn bạn có thể viết phương thức trợ giúp như bạn gợi ý. Nhưng không có cách tích hợp để làm điều này trong Java. –

+2

@SamIam: sử dụng C# không phải lúc nào cũng là giải pháp có thể chấp nhận được, bạn có thể dễ dàng tìm Groovy và quên M $. – Jack

Trả lời

8

Nếu bạn có thể sử dụng lambdaj, bạn có thể viết một cái gì đó như:

import static ch.lambdaj.Lambda.*; 

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

Đối với một số ví dụ khác về cách sử dụng lambdaj, hãy xem trang Features trên wiki lambdaj.

+0

Đó chính xác là những gì tôi đang tìm kiếm! – membersound

+1

Nhưng có sự thiếu hụt hiệu quả trong phương pháp này. Vui lòng tham khảo http://stackoverflow.com/questions/25343897/gross-lack-of-efficacy-in-using-lambdaj-over-iteration –

Các vấn đề liên quan