【问题标题】:How to update/set a new value, while iterating Hash Map object in java如何在java中迭代Hash Map对象时更新/设置新值
【发布时间】:2020-08-21 17:47:50
【问题描述】:

我在迭代 Hash Map 对象时需要帮助更新值。

假设,我有一个这样的 Hash Map 对象,

HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("X", "D10023A");
hashMap.put("DATE", "5/1/2020");
hashMap.put("Y", "");
hashMap.put("Z", "");
hashMap.put("A", "");

我需要迭代这个哈希映射对象,在迭代时我们需要检查条件,即如果 Key=DATE 并且它的值 = "5/1/2020",然后需要更新/设置其他键,即 Y、Z ,A 值是,从空(“”)字符串到一些整数值。

请帮帮我。

【问题讨论】:

  • 如果您知道要检查什么键以及要更新什么键,为什么还需要遍历 HashMap
  • 因为我有更多这样的对象,需要迭代并且 DATE 值可能不同,所以我需要检查 DATE = 5/1/2020 然后只需要更新其他值。
  • 老实说,这看起来就像您正在使用地图来完成它并不真正适用的事情。您确定使用将属性 X、Y、Z、A 和 Date 封装在单个对象中的自定义类不会更好吗?
  • Map 中,一个键下只能存储一个值。如果需要在一个键下存储多个值,则应使用Map&lt;K, List&lt;V&gt;&gt;。但是话又说回来……人们会遍历Listobtained by map.get("DATE")`,而不是遍历地图本身。我赞同@OHGODSPIDERS 的评论。
  • 因为当我使用 entrySet() 进行迭代时,我已经在一个索引中。我的问题是,尽管我们在一个索引中,我们是否可以选择在下一个条目中进行更新?

标签: java hashmap


【解决方案1】:

Map.EntryMap 实例有反向连接。 IE。当您修改 Entry 时,Map 也会被修改。

public static void main(String[] args) throws IOException {
    Map<String, String> map = new HashMap<>();
    map.put("X", "D10023A");
    map.put("DATE", "5/1/2020");
    map.put("Y", "");
    map.put("Z", "");
    map.put("A", "");

    if ("5/1/2020".equals(map.get("DATE"))) {
        for (Map.Entry<String, String> entry : map.entrySet()) {
            if ("DATE".equals(entry.getKey()))
                continue;
            if ("".equals(entry.getValue()))
                entry.setValue("666");
        }
    }
}

【讨论】:

    猜你喜欢
    • 2019-06-28
    • 2013-09-29
    • 2018-05-21
    • 2021-05-03
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多