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()方法出现了异常。

原文地址:https://www.cnblogs.com/maomaodesu/p/11873940.html