0

次のように、ループを実行するたびに配列に追加する必要がある5000個の数値を含む「do - while」ループがあります。

問題は、ループが実行されるたびに数値が上書きされ、ループが終了すると、データの最後のランスルーのみが配列にあることです。

私はこのコードを使用します:

    long cursor = -1;
    long[] fArray = new long[100000];  // more than enough space in array
    IDs ids = twitter.getFollowersIDs(name, cursor); // start with first page of 5000 numbers

    do 
    {                       
        ids = twitter.getFollowersIDs(name, cursor);            
        fArray = twitter.getFollowersIDs(name, cursor).getIDs(); // this gets Array with 5000 numbers every time until "empty"
        cursor = ids.getNextCursor();   // jump to next array with 5000 new numbers     
    } while (ids.hasNext());
4

3 に答える 3

1

非常に巨大な配列の最初の 5000 要素にのみ書き込みます。

代わりに、getFollowersIDs() 呼び出しの結果を別のローカル配列に割り当て、その後arraycopyを使用して 5000 人の現在のフォロワーをすべてのフォロワーのより大きな配列にコピーします。

于 2012-05-11T18:24:10.047 に答える
0

1 つのアイデアは、fArray を 2 次元として宣言することです。サンプルの簡単なコード: long fArray[][];

int インデックス = 0;

[ループ内で開始] いくつかのコード...

fArray[インデックス] = twitter.getFollowersIDs(名前、カーソル).getIDs(); インデックス++;

いくつかのコード... [ループ内で終了]

それが明確で簡単であることを願っています。

于 2012-05-11T19:04:38.480 に答える
0

行でfArray = twitter.getFollowersIDs(name, cursor).getIDs(); // this gets Array with 5000 numbers every time until "empty" 、配列への単純な割り当てを行っていますfArray

このようなものを使用する必要があります

long tempArr[] = twitter.getFollowersIDs(name, cursor).getIDs();

for (int i = previous_length_of_array; i < previous_length_of_array + tempArray.length; i++)
   fArray[i] = tempArr[1 - previous_length_of_array];

PS: 上記のコードはテストもコンパイルもされていません。

于 2012-05-11T18:25:08.843 に答える