程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java集合問題-java集合父集和子集操作異常

java集合問題-java集合父集和子集操作異常

編輯:編程解疑
java集合父集和子集操作異常

創建list集合添加元素sublist()得到子集,為什麼不能對父集進行增刪等操作??運行拋出concurrentmodification

最佳回答:


出現這個異常存在的原因是在遍歷集合的同時,又對集合元素進行修改導致的。比如這段代碼:

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("hello");
        list.add("world");
        List<String> subList = list.subList(1, 2);
        list.add("to");
        System.out.println(subList);
    }

分析下這個問題產生的原因:ArrayList的實現是基於數組的,它維護了一個Object[]數組對象。
跟蹤下subList方法的源碼就知道,subList操作返回的新的List,它的數組引用跟原來的父列表是同一個,只是索引的起止值不同罷了。
所以上述代碼先對父類集合add操作了,然後又遍歷子集合對象時,就會拋出上述異常了。
至於上述異常產生的原因,參考一樓。即遍歷集合的同時又對集合進行修改的話,就會報java.util.ConcurrentModificationException異常了。

wojiushiwo945you
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved