在Map中,如果我们使用现有键进行修改,则不会获得ConcurrentModificationException - java

我有以下代码,我希望从情况2的情况下抛出ConcurrentModificationException,但它运行成功。据我所知,如果我对地图中的单个键执行相同的操作,则不会抛出异常,因为here
但是当我重现这种具有两个案例的多个密钥的场景时,

通过新密钥修改。
通过现有密钥进行修改。

情况1:

    Map<String,String> mp = new HashMap<String,String>();
    mp.put("1", "10");
    mp.put("2", "11");
    mp.put("3", "12");
    mp.put("4", "13");

    for (String key :mp.keySet()) {
        mp.put("5", "14");
    }

这将按预期工作,并抛出ConcurrentModificationException

情况2:

    Map<String,String> mp = new HashMap<String,String>();
    mp.put("1", "10");
    mp.put("2", "11");
    mp.put("3", "12");
    mp.put("4", "13");

    for (String key :mp.keySet()) {
        mp.put(key, "14");
    }

它不会抛出ConcurrentModificationException。为什么??

java大神给出的解决方案

在第一种情况下,您正在修改地图的结构,以便获得CME(添加新的键/值对)。在第二种情况下,您不修改结构(覆盖现有键的值)。所以你不会得到CME

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

java.net.URI.create异常 - java

java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…

如何在JAVA中传递以逗号分隔的值作为函数参数的字符串 - java

我有一个可以接受任何数量的INTEGER参数的方法:pages(int,int...)此方法是选择PDF文件的某些页面。以以下字符串类型存储的书页:String pages = "1,2,3,6,9"; 我想将此字符串作为方法的参数看起来像:pages(1,2,3,6,9); java大神给出的解决方案 使用流可以很容易地做到这一点:St…