如何解释Java Hashmap中的重复条目?

时间:2016-04-08 08:31:13

标签: java hashmap duplicates multiple-entries

  1. 这是多线程
  2. 我已阅读有关HashMap的主题,但无法找到相关问题/答案
  3. 代码:

    $("#register").validate({
      errorPlacement: function(error, element) { },
      submitHandler: function(form) {
        $('.processing-wrapper').removeClass('hidden');
        setTimeout(function(form) {
          form.submit();
        }, 2500);
      }
    });
    

    输出:

      

    app_debug.9.log.gz:07 Apr 2016 13:47:06,661 DEBUG [WirePushNotificationSyncHandler :: WirePushNotification.Worker-1] - eventsForThisCategory是{FX_WIRE_DATA =关键经济数据,ALL_FX_WIRE =全部,ALL_FX_WIRE =全部,FX_WIRE_HEADLINES =关键头条新闻}

    怎么可能?

2 个答案:

答案 0 :(得分:1)

我很确定你的地图不会同时拥有两个相同的键。你看到的是在迭代它时修改地图的效果(在toString()中)。当写入第二个“ALL_FX_WIRE”时,第一个将不再出现在地图中。

您已经知道HashMap不是线程安全的。在eventsForThisCategory运行时,另一个线程可以修改eventsForThisCategory.toString()加号。所以这是必须的。

确保多个线程不会同时修改eventsForThisCategory(或切换到ConcurrentHashMap),并确保在toString()运行时不修改 var token = response.data['token'] var user = response.data['user'] 当你创建调试输出时。)

答案 1 :(得分:0)

HashMap在多线程中不是threadSafety。 您可以尝试使用Collections.synchronizedMap()来包装hashMap实例 或使用ConcurrentHashMap或许更好