1日の統計

つぶやいたー - ついったーランキング (Twitter Ranking)
http://twitty.jp/ranking/status/

ロイドさんが23位にランクインしていました。

こういう1日の統計をとる機能はどうやって実装しているんだろう

IDの取得時間は単純に0:00以降の最初の発言と0:00前の最後の発言(twitter APIって時間管理関係のものあったっけ?)

1日の始まりにstartIDを記録
1日の終わりのendIDも記録
Paging page = new Paging(startID);
page.setMaxId(endID);
List<Status> statuses = twitter.getFriendsTimeline(page);
for(Status status:statuses){
    status.getScreenName();を取得;
  新規だったらDBに新たに追加
  DBに登録済みだったら、Countのデータを+1;
}
DBをcount順にソート
出力では
ソートしたDBから順にユーザ名取得
User user = getUserDetail("ユーザー名");
user.getScreenName();
user.getURL();
などプロフィールを取得して表示

こんな感じなのかな

#PS
全然違ったgetPublicTimeline()は引数にsinceidしか入れられなくて20ステータスしか返せないみたい
どうやって1日のデータ取ってるのかわからないや
短い間隔でコツコツ集めてるのかな

Listって要素を何個まで入れられるんだろう、制限なしってこともないと思う
制限あるならその数づつ処理しなきゃあうあう

試しにこんなことしてみた

public class Test {
	public static void main(String[] args) throws SQLException {
		ArrayList<Integer> a = new ArrayList<Integer>();
		while(true){
			a.add(1);
			System.out.println(a.size());
		}
	}
}
7634065
7634066
7634067
7634068
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:2760)
	at java.util.Arrays.copyOf(Arrays.java:2734)
	at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
	at java.util.ArrayList.add(ArrayList.java:351)
	at Test.main(Test.java:12)

メモリが許す限りいけるらしい
TwitterのPOST1日分集めるだけなら十分すぎるみたい

あれ?
Statusクラス
getId()
返値はlong

Pagingクラス
void setSinceId(int sinceId)
void setSinceId(long sinceId)
の引数intとlong

Twitterクラス
getPublicTimeline(int sinceID)
の引数はint

getできるIDはlongなのにどうやってTwitterクラスの引数としてintのIDを与えるんだろうか キャストして突っ込んで良いの?