2

public class Item { int price; String name; // getters and setters } たとえば、そのような1000個以上のオブジェクトがあるとクラスに言わせます(単なる例です)。商品ごとに価格が異なります。そして、このアイテムオブジェクトはすべてList<Item>私の要件にあり、合計価格(つまり、リストのアイテム1からn番目のアイテムの価格)を取得することです。

特定のフィールドの合計(つまり、すべてのアイテムの合計価格)を取得できるユーティリティまたは方法はありますか。List、ClassName、および fieldName を指定するだけで、合計を取得できますか? リストを反復処理して合計を取得し、get メソッドを呼び出してすべてを加算し、変数に格納できることはわかっています。

前もって感謝します。

4

2 に答える 2

2

AFAIKは標準のJDKにはありませんが、多くの既存のライブラリにこのための関数があります。たとえば、lambdajを使用すると、次のことができるはずです。sumFrom(objects, on(Object.class).getField())

于 2011-12-14T13:11:56.307 に答える
2

リスト内のいくつかのプロパティの合計を計算する簡単なメソッドを作成しました。

public static <E> Integer sum(List<E> obejcts, String propertyName) throws 
        IllegalAccessException, 
        InvocationTargetException, 
        NoSuchMethodException {
    Integer sum = 0;
    for (Object o: obejcts) {
        sum += (Integer)PropertyUtils.getProperty(o, propertyName);
    }
    return sum;
}

このために、Javabeansテクノロジーを使用します。必要なライブラリはapache サイトから直接ダウンロードできます。

これを使用する例を次に示します。

public class MyObject {
プライベート int x;

public MyObject() { }

public int getX() { x を返します。}

public void setX(int x) { this.x = x; }

}

そして合計を計算します:

List<MyObject> l = new ArrayList<MyObject>();
...
try {
int a = sum(l,"x");
System.out.print(a);
} catch (IllegalAccessException e) {
...
于 2011-12-14T14:21:06.393 に答える