(六)設計一個TimeMap
阿新 • • 發佈:2019-02-18
creat 就是 entry 排序 ria java 設計 eem oid
一、描述
- 設計一個TimeMap,基於key value的
- 支持兩類操作set(string key, string value, int timestamp),get(string key, int timestamp)
- 在get(string key, int timestamp)方法中,返回一個值,滿足set(string key, int timestamp_prev) timestamp_prev <= timestamp,其中timestamp_prev為最大的timestamp_prev。
二、思路
要借助TreeMap。
TreeMap大概描述
- 根據key排序的map
- 有firstkey()接口,就是排在第一的key
- 有floorEntry()接口,其實就是largerest key。
三、code
1 package algorithm; 2 3 import java.util.HashMap; 4 import java.util.TreeMap; 5 6 /** 7 * Created by adrian.wu on 2019/2/18. 8 */ 9 public class TimeMap { 10 private HashMap<String, TreeMap<Integer, String>> map = newHashMap<>(); 11 12 private static final String ES = ""; 13 14 public void set(String key, String value, int ts) { 15 TreeMap<Integer, String> tm = map.get(key) == null ? new TreeMap<>() : map.get(key); 16 tm.put(ts, value); 17 map.put(key, tm); 18} 19 20 public String get(String key, int ts){ 21 if(map.get(key) == null) return ES; 22 TreeMap<Integer, String> tm = new TreeMap<>(); 23 if (tm.firstKey() > ts) return ES; 24 return tm.floorEntry(ts).getValue(); 25 } 26 }
(六)設計一個TimeMap