for (Tweet tweet : tweets) {
for(long forId : idFromArray){
long tweetId = tweet.getId();
if(forId != tweetId){
String twitterString = tweet.getText();
db.insertTwitter(twitterString, tweetId);
}
}
}
My code won’t run pass the first for{} loop, that’s why idFromArray is empty since I don’t add anything there until a tweet is has been added to the database.
And even if there is something in the array it loops the whole thing twice (DUH! Since I have two loops) which makes the database very bloated with the same tweets.
It is not a simple compare of the two tweets id and simply ignore the ones with the same id.
I’m pretty certain there is a really simple solution to this problem, but I still can’t wrap my head around it. Anybody?
UPDATE:
What I want is the code to ignore the the tweetId that already is in the database.
And just insert the tweets that is not in the database.
I don’t think I should have two for-loops, I think the second loop should be replaced with something? (or maybe I’m wrong?)
If I understand correctly, what you want to do, in pseudo-code is the following:
I assume your db class actually uses an sqlite database as a backend? What you could do is implement
containsTweetdirectly and just query the database each time, but that seems less than perfect. The easiest solution if we go by your base code is to just keep aSetaround that indexes the tweets. Since I can’t be sure what theequals()method ofTweetlooks like, I’ll just store the identifiers in there. Then you get:It would probably be better to save a tiny bit of this work, by sorting the list of
tweetsto begin with and then just filtering out duplicate tweets. You could use:Then process it
Yes, you could do this using a second for-loop, but you’ll run into performance problems much more quickly than with this approach (although what we’re doing here is trading time for memory performance, of course).