使用 hashMap和treeMap开启多个摄像头的监控任务
背景:今天有个需求,传入多个摄像头ID,然后调用接口,开启这些摄像头的监控任务。
方法一:
如果你的摄像头监控任务格式为:
{camera_id_list=[{createBy=tjt, cameraId=camera01, startTime=2019-1-10 22:58:19}, {createBy=tjt, cameraId=camera02, startTime=2019-1-10 22:58:19}], callback=http://www.baidu.com}
这种格式的话,那么可以用hashMap搞定。

代码如下:
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList; import org.apache.commons.lang.time.DateFormatUtils; import lombok.extern.slf4j.Slf4j; @Slf4j
public class HashMapUtil { public static void main(String[] args) {
HashMapUtil.testHashMap("camera01,camera02,camera03");
} public static void testHashMap(String cameraStrList) {
String[] splitCameraList = cameraStrList.split(",");
HashMap<String, Object> hashMap = new HashMap<>();
//add and delete faster than arrayList when using linkList
LinkedList<Object> linkedList = new LinkedList<>();
for(String splitCamera : splitCameraList) {
hashMap.put("cameraId", splitCamera);
hashMap.put("createBy","tjt");
hashMap.put("startTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
linkedList.add(hashMap);
hashMap = new HashMap<>();
}
HashMap<Object, Object> paramMap = new HashMap<>();
paramMap.put("camera_id_list", linkedList);
paramMap.put("callback", "http://www.baidu.com");
log.info("linkedList: "+linkedList);
log.info("paramMap: "+paramMap);
} }
执行结果:
inkedList: [{createBy=tjt, cameraId=camera01, startTime=2019-1-10 22:58:19},{createBy=tjt, cameraId=camera02, startTime=2019-1-10 22:58:19}, {createBy=tjt, cameraId=camera03, startTime=2019-1-10 22:58:19}]
paramMap: {camera_id_list=[{createBy=tjt, cameraId=camera01, startTime=2019-1-10 22:58:19}, {createBy=tjt, cameraId=camera02, startTime=2019-1-10 22:58:19}, {createBy=tjt, cameraId=camera03, startTime=2019-1-10 22:58:19}], callback=http://www.baidu.com}
方法二:
如果你的摄像头监控任务格式为:
{camera_id_list=[{cameraId=camera01, cameraId=camera02, cameraId=camera03}], callback=http://www.baidu.com}
二叉树treeMap,当传入的两个key值一样,会返回结果0,则会覆盖掉之前的cameraId,返回结果:{camera_id_list=[{cameraId=camera03}], callback=http://www.baidu.com};
重写了treeMap中的比较方法,当比较结果返回值小于0,则排在二叉树的左边即集合倒序,当比较结果返回值大于0,则排在二叉树的右边亦不会覆盖之前的key值;

代码如下:
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.TreeMap;
import lombok.extern.slf4j.Slf4j; @Slf4j
public class TreeMapUtil { public static void main(String[] args) {
TreeMapUtil.testTreeMap("camera01,camera02,camera03");
} @SuppressWarnings({ "unchecked", "deprecation" })
public static void testTreeMap(String cameraStrList) {
String[] splitCameraList = cameraStrList.split(",");
LinkedList<Object> linkedList = new LinkedList<>();
@SuppressWarnings({ "unchecked", "unused", "rawtypes" })
TreeMap treeMap = new TreeMap(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return 0;
}
});
for(String splitCamera : splitCameraList) {
treeMap.put("cameraId", splitCamera);
}
linkedList.add(treeMap);
HashMap<Object, Object> paramMap = new HashMap<>();
paramMap.put("camera_id_list", linkedList);
paramMap.put("callback", "http://www.baidu.com");
log.info("linkedList: "+linkedList);
log.info("paramMap: "+paramMap);
}
}
执行结果:
linkedList: [{cameraId=camera01, cameraId=camera02, cameraId=camera03}]
paramMap: {camera_id_list=[{cameraId=camera01, cameraId=camera02, cameraId=camera03}], callback=http://www.baidu.com}
使用 hashMap和treeMap开启多个摄像头的监控任务的更多相关文章
- HashMap与TreeMap源码分析
1. 引言 在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...
- Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |
Collections+Iterator 接口 1. Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询 ...
- 【转】HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
转自:http://blog.csdn.net/paincupid/article/details/47746341 一.HashMap和TreeMap区别 1.HashMap是基于散列表实现的,时间 ...
- HashMap vs TreeMap vs Hashtable vs LinkedHashMap
Map是一个重要的数据结构,本篇文章将介绍如何使用不同的Map,如HashMap,TreeMap,HashTable和LinkedHashMap. Map概览 Java中有四种常见的Map实现,Has ...
- Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...
- HashMap,HashTable,TreeMap区别和用法
开始学HashTable,HashMap和TreeMap的时候比较晕,觉得作用差不多,但是到实际运用的时候又发现有许多差别的.需要大家注意,在实际开发中以需求而定. java为数据结构中的映射定义了一 ...
- 【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap
参考的优秀文章: <Java编程思想>第四版 <Effective Java>第二版 Map接口是映射表的结构,维护键对象与值对象的对应关系,称键值对. > hashco ...
- Java中HashMap,LinkedHashMap,TreeMap的区别[转]
原文:http://blog.csdn.net/xiyuan1999/article/details/6198394 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类 ...
- 学习java之HashMap和TreeMap
HashMap和TreeMap是Map接口的两种实现,ArrayDeque和LinkedList是Queue接口的两种实现方式.下面的代码是我今天学习这四个数据结构之后写的.还是不熟悉,TreeMap ...
随机推荐
- La protezione del puntatore laser
Questo puntatore laser è sempre sufficientemente efficiente per eseguire il test più accurato su qua ...
- MySQL9:索引实战
索引 无论是面试,还是实际工作中,对于一个Java程序员来说,数据库优化是避不开的一个技术点,关于数据库的优化,在性能达不到要求的情况下,我大致给出以下几个方向: (1)优化表结构,对常用字段和非常用 ...
- 「总结」 MLEAutoMaton的各种板子总结
太菜了,所以咕了,欢迎评论留言... 网络流(不全) 自适应Simpson
- 【转】vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
原文地址https://www.cnblogs.com/lxwphp/p/7738356.html (一)初级个性化配置你的vim 1.vim是什么? vim是Vi IMproved,是编辑器Vi的一 ...
- Linux pwn入门教程(10)——针对函数重定位流程的几种攻击
作者:Tangerine@SAINTSEC 本系列的最后一篇 感谢各位看客的支持 感谢原作者的付出一直以来都有读者向笔者咨询教程系列问题,奈何该系列并非笔者所写[笔者仅为代发]且笔者功底薄弱,故无法解 ...
- post上传和压缩、插件模拟请求
gzip gzip一种压缩方式,或者是文件形式,它主要用于网络传输数据的压缩 gzip压缩好不好用 浏览器:网速一定.内容越小.请求响应的速度是不是更快 手机server:返回数据类型是json/ ...
- 每天学点SpringCloud(二):服务注册与发现Eureka
相信看过 每天学点SpringCloud(一):简单服务提供者消费者调用的同学都发现了,在最后消费者调用提供者的时候把提供者的地址硬编码在了代码中,这样的方式肯定是不行的,今天,我们就是要Eureka ...
- 第七篇: 消息总线(Spring Cloud Bus)
Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现通知微服务 ...
- JVM和GC垃圾回收机制和内存分配
JVM运行期间 线程共享 线程私有 线程共享: 方法区 堆方法区:存放可以共享数据,静态常量,类的共有方法属性字段等,可以共享的存在方法区. 堆:存放class对象 . 线程私有:本地方法栈 虚拟机栈 ...
- HOG算法资源备忘
最近再研究这个算法,找了不少资料来研究,发现这方面的资料好的并不多,今天就把找到的经典的资料做一个汇总,方便后续查阅吧. 一 基本概念和推导: 1 解释最清楚的:中文网站:https://blog.c ...