为了账号安全,请及时绑定邮箱和手机立即绑定

使用 hashMap和treeMap开启多个摄像头的监控任务

标签:
Java

背景:今天有个需求,传人多个摄像头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 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", new Date().toLocaleString());
            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值;

代码如下:

package com.xinyan.springcloud.controller;

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 100;
            }
        });
        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}

日期转换的方法过时了,换了新的:

DateFormatUtils.format(new Date(),“yyyy-MM-dd HH:mm:ss”))

原文出处:https://www.cnblogs.com/taojietaoge/p/10253247.html 

作者:涛姐涛哥

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消