1. 程式人生 > >(六)設計一個TimeMap

(六)設計一個TimeMap

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 = 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 }

(六)設計一個TimeMap