2

私がやりたいことは、クラス Dude のいくつかのインスタンスの少なくとも 1 つ (たとえば) が特定の変数に対して特定の値を持っているかどうかを確認することです。

public boolean isFat(Dude d) {
    // checks weight and returns boolean
}

...

for (i = 0; i < DudeList.size(); i++) {
    if (isFat(DudeList.get(i)) {
        //do your stuff
    }
}

DudeListすべてのコンストラクターにインスタンスを追加する静的ArrayList参照になります。トリックを知っていると思います。DudeDude

しかし、もっと簡単な方法があるかどうか疑問に思っていましたか?これはちょっとずさんなようです。138174917 個の Dude インスタンスがあり、1 つまたは 2 つだけが Fat である可能性があるためです。

4

1 に答える 1

3

このように反復したくない場合は、「太っている」クラスの外部カウントを実行するのがおそらく最善の方法です。通常、これはクラスの静的変数で行い、その変数のセッターでカウントをインクリメントする必要があります。

public class Dude{
    static int nFats = 0;

    public void setFat(){
        Dude.nFats++;
    }
}

より安全にしたい場合 (この場合はおそらくより正確) 、スレッドセーフ カウンター用に特別に設計されたAtomicIntegerを使用することもできます。

于 2013-06-14T23:13:30.477 に答える