集合
ArrayList底层是以数组结构实现的,linkedList底层则是以链表结构实现的。HashSet底层则是以map(key,value)的结构实现的,HashMap的底层又是以数组结构结合链表的结构实现的。
红黑树将第一个元素设置为根节点,小于根节点的元素放在左叶,大于根结点的元素放在右叶。
使用迭代器遍历集合时删除集合元素的问题:
list的迭代器遍历到该集合倒数第二个元素时调用list的remove方法删除任意元素时不会报错,但此时不会访问该集合中的最后一个元素,如果不是在遍历到该集合倒数第二个元素时调用remove方法,则会报ConcurrentModificationException异常。发生此现象的原因是:list的迭代器在遍历时获取下一个元素之前会先判断下一元素是否存在(通过下一个元素的索引是否等于集合的大小,等于的话表示不存在)。如果存在的话,会调用获取方法(遍历之前使用expectedModCount保留该集合被修改的次数,每次获取集合的下一个元素之前检查集合的当前修改次数与遍历之前的修改次数是否相等,如果不相等则直接抛出ConcurrentModificationException异常)
set的迭代器遍历到该集合最后一个元素时调用set的remove方法删除任意元素时不会报错