-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution.java
85 lines (59 loc) · 1.96 KB
/
Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
class user
{
HashMap<Integer,Integer> tweet = new HashMap();
Set<Integer> followee= new HashSet();
}
class Twitter {
int timestamp=1;
HashMap<Integer,user> uniqueUser=null;
public Twitter() {
uniqueUser= new HashMap();
}
public void postTweet(int userId, int tweetId) {
user user = uniqueUser.get(userId);
if (user != null) {
user.tweet.put(timestamp, tweetId);
} else {
user newUser = new user();
newUser.tweet.put(timestamp, tweetId);
uniqueUser.put(userId, newUser);
}
timestamp++;
}
public List<Integer> getNewsFeed(int userId) {
ArrayList<Map.Entry<Integer,Integer>> result = new ArrayList();
user user = uniqueUser.get(userId);
if (user != null) {
result.addAll(user.tweet.entrySet());
for (int i: user.followee) {
user user2 = uniqueUser.get(i);
if (user2 != null) {
result.addAll(user2.tweet.entrySet());
}
}
Collections.sort(result, (Map.Entry<Integer,Integer> a, Map.Entry<Integer,Integer> b ) -> b.getKey()-a.getKey());
}
List<Integer> list = new ArrayList();
for(Map.Entry<Integer,Integer> entry : result){
list.add(entry.getValue());
if(list.size()==10)
return list;
}
return list;
}
public void follow(int followerId, int followeeId) {
user user = uniqueUser.get(followerId);
if (user != null) {
user.followee.add(followeeId);
} else {
user newUser = new user();
newUser.followee.add(followeeId);
uniqueUser.put(followerId, newUser);
}
}
public void unfollow(int followerId, int followeeId) {
user user = uniqueUser.get(followerId);
if (user != null) {
user.followee.remove(followeeId);
}
}}