在循环中向数组添加数据

时间:2012-05-11 18:20:49

标签: java twitter twitter4j

我有一个带有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());

3 个答案:

答案 0 :(得分:1)

你总是只写入你巨大阵列的前5000个元素。

相反,您希望将getFollowersIDs()调用的结果分配给单独的本地数组,然后使用arraycopy将5000个当前关注者复制到更大的所有关注者阵列中

答案 1 :(得分: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];

P.S: 上面的代码没有经过测试也没有编译,只是试着举例说明你应该做什么

答案 2 :(得分:0)

一个想法是声明fArray是二维的。 示例简要代码: long fArray [] [];

int index = 0;

[从循环内部开始] 一些代码...

fArray [index] = twitter.getFollowersIDs(name,cursor).getIDs(); 索引++;

一些代码...... [在循环中结束]

我希望这清楚而简单。