1

Java でコーディングしており、現在 ArrayList にあるデータ オブジェクトの数を返す関数を作成する必要があります。現時点で私はこれを持っています:

  int count = 0;
    for (int i = 0; i < data.length; i++)
    { 
        if (data[i] != null)
        {
            count ++;
        }
    }
    return count;

しかし問題は、null データを含む配列リストが受け入れられることであり、このカウンターに対して null データをカウントする必要があります。この配列の途中にある null データを含め、カウント対象外の null データを含めるにはどうすればよいですか?

たとえば、配列に (8),null,null,(23),(25) を追加するテスター コードがあり、初期配列サイズが 10 の場合、この関数は 5 を返す必要があります。

4

3 に答える 3

2

通常の配列を使用していると仮定します(これについては、質問があいまいです)。null 以外の要素が見つかるまで、配列を逆方向にトラバースします。

public static int count(Object[] a) {
    int i = a.length - 1;
    for (; i >= 0 ; i--)
        if (a[i] != null)
            break;
    return i + 1;
}

あなたも持つことができます

public static <T> int count(T[] a) {
    int i = a.length - 1;
    for (; i >= 0 ; i--)
        if (a[i] != null)
            break;
    return i + 1;
}

あなたが提供したものに類似した例を使用して、それをテストしましょう:

Object[] a = new Object[10];
a[0] = new Object();
a[3] = new Object();
a[4] = new Object();
System.out.println(count(a));

出力:

5
于 2012-11-06T23:00:50.573 に答える
0

2 つの独立したカウンターが必要になります。最初のものは正常にカウントされます。2 つ目は、データが見つかるとカウントを開始しますnull。次に、null 以外のデータが見つかったら、最初のカウンターに 2 番目のカウンターを追加し、再び null が見つかるまで最初のカウンターでカウントを続けます。

于 2012-11-06T22:58:20.583 に答える
0
int count = 0;
for (int i = data.length - 1; i >= 0; i--)
    if (data[i] != null || count > 0)
        count += 1;
return count;

少なくともそれが私があなたの要件を理解した方法です-末尾のヌルを除いて、ヌルを数えてください。

しかし、それは実際にはあなたが意図したものではありませんか?

編集

実際に使用していない限りArrayList(Jon が求めていたように)、 whereは容量.size()とは異なり、追加されたすべての要素 (null を含む) をカウントします。実際には、から容量を取得することさえできません。ArrayList

于 2012-11-06T22:59:50.630 に答える