forked from seanprashad/leetcode-patterns
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path635_Design_Log_Storage_System.java
37 lines (30 loc) · 1.18 KB
/
635_Design_Log_Storage_System.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
classLogSystem {
privateTreeMap<String, List<Integer>> logs;
privateMap<String, Integer> delimeters;
privatestaticfinalStringmin = "2000:01:01:00:00:00";
privatestaticfinalStringmax = "2017:12:31:23:59:59";
publicLogSystem() {
logs = newTreeMap<>();
delimeters = newHashMap<>();
delimeters.put("Year", 4);
delimeters.put("Month", 7);
delimeters.put("Day", 10);
delimeters.put("Hour", 13);
delimeters.put("Minute", 16);
delimeters.put("Second", 19);
}
publicvoidput(intid, Stringtimestamp) {
logs.putIfAbsent(timestamp, newArrayList<>());
logs.get(timestamp).add(id);
}
publicList<Integer> retrieve(Stringstart, Stringend, Stringgranularity) {
List<Integer> result = newArrayList<>();
intidx = delimeters.get(granularity);
StringsearchStart = start.substring(0, idx) + min.substring(idx),
searchEnd = end.substring(0, idx) + max.substring(idx);
for (Stringtimestamp : logs.subMap(searchStart, true, searchEnd, true).keySet()) {
result.addAll(logs.get(timestamp));
}
returnresult;
}
}