【问题标题】:Map put not working Java地图放不工作Java
【发布时间】:2015-03-04 15:25:16
【问题描述】:

我有一个包含一些值的 Map,我需要在其中添加一个新条目,问题是 put“丢失”了 Object,而我只有新的 Key。

这里是代码

public void addSeries(SerieInterface serieObject)
{
    Map<String, Object> series = this.getSeries();
    if (series == null)
        series = new HashMap<String, Object>();
    series.put(serieObject.getSerie_instance(), serieObject);
    this.setSeries(series);
} 

"series" 是现有映射(是一个 BasicDBObject,它扩展了 LinkedHashMap),我需要在其中添加 serieObject 对象(一个具有两个扩展 JSONObject 的字符串字段的对象); 在“放置”命令之后,我在地图中有旧的两个对象,而新的只有“键” (我只有 {"Key" : { } }) (我已经在调试中检查了 serieObject,它包含所有字段)

原因有什么建议吗?为什么地图的对象“价值”丢失了? 我没有任何类型的异常,我只是失去了价值......

感谢您的帮助,对不起我的英语不完美

【问题讨论】:

    标签: hashmap put jsonobject linkedhashmap


    【解决方案1】:

    Luca,请在测试结束时更清楚地描述您的结构中的内容,{"Key" : { } } 意义不大,{} 值是什么类型的 Object?

    看看这个series.put(serieObject.getSerie_instance(), serieObject); serieObject 似乎至少有一个奇怪的名称 getSerie_instance 键,它不为空。

    还有一些其他的事情:

    1) this.getSeries() ,如果这个 Map 是一个类属性,直接使用它,如果你只返回值,不要使用 setter/getter。

    2) if (series == null),为什么不在类的构造函数中初始化这个Map呢?这样更干净。

    【讨论】:

    • 在方法的最后,在结构系列中我有 3 个元素。 1 - “ID1”:{“serie_instance”:“ID1”; “study_instance”:“IDS_1”} 2 - “ID2”:{ “serie_instance”:“ID2”; "study_instance" : "IDS_1" } 3 - "ID3" : { } 当前两个元素是旧元素时,第三个元素具有我添加的“serieObject”键但没有值(它必须像另一个二、与“serie_istance”:“ID3”和“study_instance”其他两个是一样的)
    • 在构造函数中移除get/set并初始化series map,问题不可能出在这里,但是用另一种方法,你确定你没有覆盖series或指向不同地方的不同东西吗?
    • 在 Eclipse 中运行它并在 this.setSeries(series) 处放置一个断点,当它停止时(不要单击下一步)检查系列的值。您刚刚使用 serie_instance 作为元素键,该对象不能为...为空。请不要使用这种 javascript 语法:D
    • SerieObject 必须有 serie_instance 和 study_instance,如果其中一个为 null 我不调用此方法,那是因为我希望新元素不为 null。在调试中,我检查了“系列”的值,这正是它必须的,问题是在“放置”之后。对不起语法,它是 JSON XD
    • 按照描述使用 Eclipse 对其进行调试,如果类不是太大,请将其添加到您的答案中。我认为问题出在其他地方。 Map.put 有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多