当前位置: 首页 > news >正文

(6)设计一个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 }

 

转载于:https://www.cnblogs.com/ylxn/p/10394992.html

相关文章:

  • 20190218日记
  • Cisco路由器上配置DHCP全程详解
  • App的登录注册相关接口
  • LINQ : 在LINQ TO SQL中关闭ObjectTrackingEnabled提高性能
  • pat乙级 1031-1035
  • ISA的学习体会一:ISA设置的指导思想
  • luogu P4848 崂山白花蛇草水
  • idou老师教你学Istio 26:如何使用Grafana进行可视化监控
  • RHEL4- WEB服务(十一)apache服务器日志的压缩、回滚
  • 你的知识,价值几何?
  • os.path.dirname使用方法
  • NetBeans 时事通讯(刊号 # 66 - Jul 30, 2009)
  • Android Studio Fragment 无法获取 id的方法
  • 信息安全的理解和全局对策转
  • HDU 1276
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 2017年终总结、随想
  • Android系统模拟器绘制实现概述
  • canvas绘制圆角头像
  • CentOS6 编译安装 redis-3.2.3
  • co.js - 让异步代码同步化
  • dva中组件的懒加载
  • HTTP 简介
  • HTTP中的ETag在移动客户端的应用
  • IndexedDB
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PHP那些事儿
  • Promise初体验
  • Selenium实战教程系列(二)---元素定位
  • vuex 笔记整理
  • Wamp集成环境 添加PHP的新版本
  • 免费小说阅读小程序
  • 使用Swoole加速Laravel(正式环境中)
  • 【干货分享】dos命令大全
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • ()、[]、{}、(())、[[]]命令替换
  • (pojstep1.3.1)1017(构造法模拟)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (已解决)什么是vue导航守卫
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • . NET自动找可写目录
  • .NET Core 2.1路线图
  • .NET Core跨平台微服务学习资源
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)