zoukankan      html  css  js  c++  java
  • Java中的集合Collection

    集合的体系:

    Collection 接口 单列集合

    List 接口 可以重复 存取有序。有索引。

    	ArrayList (数组)
    	LinkedList(链表)
    	Vector(已经不用了)
    

    Set 接口 不可以重复 存取无序 无索引

    	HashSet
    	TreeSet
    

    Map 接口 双列集合。

      HashMap
      TreeMap
      Properties
    

    Collection

    先学习最底层的共性的东西。

    Collection常用方法:



    Collection的遍历:迭代器(遍历器)

    迭代器的设计理念:


    不同数据结构都有自己的迭代器,haxNext和next。这些迭代器都去继承Iterator接口(小写iterator是Iterator的子类),
    这样我们编程人员在创建迭代器的时候就不需要把每个数据类型的遍历方式都去记忆了。

    使用迭代器遍历的方式:


    例如:

    并发修改异常:

    当我们想往集合里添加数据的时候,由于是collection接口下我们只能使用迭代器Iterator,但是却报错。


    错误ConcurrentModificationException。
    查看源码发现原因如下:
    add方法会记录一个modCount,即实际修改集合次数。

    我们创造迭代器的时候,迭代器会把modCount(实际修改集合次数)的值赋给expectedmodCount(预期修改集合次数)

    在next方法里第一步执行检查checkForComodification()函数,会比较expectedmodCount(预期修改集合次数)和
    modCount(实际修改集合次数)的值是否相同

    很明显,我们在创造了迭代器后又使用add()方法改变了modCount(实际修改集合次数),所以next()方法出现了异常。

  • 相关阅读:
    P2029 跳舞
    P2502 [HAOI2006]旅行
    P4310 绝世好题
    P2857 [USACO06FEB]稳定奶牛分配Steady Cow Assignment
    P1131 [ZJOI2007]时态同步
    P2052 [NOI2011]道路修建
    P3141 [USACO16FEB]围栏Fenced In_Platinum
    ubuntu 12.04上安装QQ2013(转载)
    ubuntu 12.04 alt+tab无法切换窗口的问题(转载)
    Ubuntu 12.04 设置终端字体为文泉驿(转载)
  • 原文地址:https://www.cnblogs.com/maomaodesu/p/11873940.html
Copyright © 2011-2022 走看看