A very easy way to get a list of tweets by their ID is to use the lookup
function like this:
public static void main(String[] args) throws TwitterException {
ConfigurationBuilder cfg = new ConfigurationBuilder();
cfg.setOAuthAccessToken("key");
cfg.setOAuthAccessTokenSecret("key");
cfg.setOAuthConsumerKey("key");
cfg.setOAuthConsumerSecret("key");
Twitter twitter = new TwitterFactory(cfg.build()).getInstance();
long[] ids = new long [3];
ids[0] = 568363361278296064L;
ids[1] = 568378166512726017L;
ids[2] = 570544187394772992L;
ResponseList<Status> statuses = twitter.lookup(ids);
for (Status status : statuses) {
System.out.println(status.getText());
}
}
The advantage of using lookup
is that you can get with a sigle call up to 100 tweets, this means that if you have to download a big number of tweets you will need to do a lot less calls to the twitter API and speed up the process (this is because twitter limits the number of calls you can do).
You can even check the number of calls that you can do before twitter puts you in timeout like this:
RateLimitStatus searchLimits = twitter.getRateLimitStatus("statuses").get("/statuses/lookup");
int remain = searchLimits.getRemaining();
int limit = searchLimits.getLimit();
int secToReset = searchLimits.getSecondsUntilReset();
System.out.println(remain); // this returns the number of calls you have left
System.out.println(limit); // this returns how many calls you have max(this is a fixed number)
System.out.println(secToReset); // this returns the number of second before the reset
// after the reset you return to have the number of calls specified by "limit"