微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从ConcurrentSkipListMap中删除多个项目

如何解决从ConcurrentSkipListMap中删除多个项目

我有一个类型为concurrentskiplistmap全局变量,定义如下:

 static ConcurrentNavigableMap<zoneddatetime,String> notificationMap = new concurrentskiplistmap<zoneddatetime,String>(Comparator.comparingLong(v -> v.toInstant().toEpochMilli()));

我要对这张地图进行以下操作

  1. 检查地图中是否已存在新项目
  2. 如果不存在,则将新项目添加到地图中。

我还想删除3分钟以上的项目。所以我的实现是这样的

private Boolean isDuplicateNotification(String hMac,String jsonString) {
        try (JsonReader jsonReader = Json.createReader(new StringReader(jsonString))) {
            notificationMap = getEventsFromLastthreeMinutes();
            if (notificationMap.containsValue(hMac))
                return true;
            return false;
            
        }       
    }
private void storeNotification(String hMac) {
        WebHookEvent event = new WebHookEvent(eventTime,hMac);       
        notificationMap.put(event.eventTime,event.hmac);             
    }
    
 public static ConcurrentNavigableMap<zoneddatetime,String> getEventsFromLastthreeMinutes() {
    return notificationMap.tailMap(zoneddatetime.Now().minusMinutes(3));
}

如果我在3分钟后收到新商品,我的地图就会变空(如果在3分钟内仅收到1件商品),并且在storeNotification事件中,它会返回以下异常

SRVE0777E:引发异常

应用程序类 'java.util.concurrent.concurrentskiplistmap $ SubMap.checkKeyBounds:2,435' [INFO] java.lang.IllegalArgumentException:键超出 rangejava.base / java.util.concurrent.concurrentskiplistmap $ SubMap.checkKeyBounds(concurrentskiplistmap.java:2435)

但是如果我再发送一次。.

它将毫无问题地添加到地图中。我该如何实现?我们可以在不重新分配地图的情况下从地图中删除多个项目吗? 请帮我。 谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?