Design Twitter

public class Twitter {
private static class Tweet {
    int tweetId;
    int userId;
    Tweet(int tweetId, int userId) {
        this.tweetId = tweetId;
        this.userId = userId;
    }
}
private static final int NEWS_FEED_SIZE = 10;
private Deque<Tweet> tweets = new ArrayDeque<>();
private Map<Integer, Set<Integer>> followeesByFollower = new HashMap<>();
public Twitter() {
}
public void postTweet(int userId, int tweetId) {
    tweets.add(new Tweet(tweetId, userId));
}
public List<Integer> getNewsFeed(int userId) {
    List<Integer> newsFeed = new ArrayList<>(NEWS_FEED_SIZE);
    Set<Integer> followees = followeesByFollower.get(userId);
    for (Iterator<Tweet> it = tweets.descendingIterator(); it.hasNext() && newsFeed.size() < NEWS_FEED_SIZE; ) {
        Tweet tweet = it.next();
        if (tweet.userId == userId || (followees != null && followees.contains(tweet.userId))) {
            newsFeed.add(tweet.tweetId);
        }
    }
    return newsFeed;
}
public void follow(int followerId, int followeeId) {
    if(followeesByFollower.containsKey(followerId)) {
        followeesByFollower.get(followerId).add(followeeId);
    } else {
        Set<Integer> followees = new HashSet<>();
        followees.add(followeeId);
        followeesByFollower.put(followerId, followees);
    }
}
public void unfollow(int followerId, int followeeId) {
    if (followeesByFollower.containsKey(followerId)) {
        Set<Integer> followees = followeesByFollower.get(followerId);
        if (followees.contains(followeeId)) {
            followees.remove(followeeId);
        }
    }
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值