You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多值哈希表(ArrayList存值)问题:新项目经理对应列表未重置

哈希表存储ArrayList引用的问题解析与修复

核心疑问解答

是的,哈希表(multiValueMap)中存储的确实是ArrayList的引用,这就是你遇到两个问题的根源:

  • 清空ArrayList后哈希表中的值也被清空:因为哈希表里的“值”和你操作的ArrayList是同一个对象,只是用引用指向它,修改原对象会直接影响哈希表里的内容。
  • 无法按项目经理分组:你当前每次调用函数都新建一个ArrayList,然后直接覆盖掉该项目经理之前的条目,而不是往已有列表追加内容。

代码问题分析

你当前的代码逻辑错误在于:每次处理项目经理时,都新建一个alMissingValues,然后直接put进哈希表——这会把该项目经理之前对应的列表完全替换掉,而不是累积条目。

修正后的代码

function addMissingValues(strProjMgr, strDOORSName, missingValues){
    var docID = delta.getID();
    var strDOORSNameBoilerP= "<br /><b>Document ID</b> " + docID + ", </b><br /><i><b>DOORS Module</b> " + strDOORSName + "</i><br />";
    var strHeaderText = strDOORSNameBoilerP + missingValues+ "<br /><br />";
    
    // 先检查哈希表中是否已有该项目经理对应的ArrayList
    var alMissingValues = multiValueMap.get(strProjMgr);
    
    // 如果没有,才新建ArrayList并放入哈希表
    if (!alMissingValues) {
        alMissingValues = new java.util.ArrayList();
        multiValueMap.put(strProjMgr, alMissingValues);
    }
    
    // 往专属列表中添加当前条目
    alMissingValues.add(strHeaderText);
}

修正逻辑说明

  1. 复用已有列表:先通过get方法获取该项目经理对应的列表,只有当列表不存在时才新建,避免覆盖已有数据。
  2. 隔离引用:每个项目经理对应独立的ArrayList,不会出现多个条目共享同一个对象引用的情况,自然也不会出现清空一个列表影响所有哈希表条目的问题。

内容的提问来源于stack exchange,提问作者JenPann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:45:01