(六)设计一个TimeMap

一、描述

  • 设计一个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 = new HashMap<>();
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 }

猜你喜欢

转载自www.cnblogs.com/ylxn/p/10394992.html