集合框架List
集合框架List
集合框架的由来
数据多了用对象进行存储,对象多了用集合来进行存储。而存储数据的方式(数据结构)各有不同,所以存储的容器也就有多种,从而形成了集合框架这一体系。
List集合相对于collection集合所特有的方法
凡是参数里含有下标的方法都是该体系所特有的方法
这里只是一小部分,想要看更多请点击链接List在线文档
迭代器
List的迭代器有两个,一个是Iterator,一个是ListIterator。ListIterator是Iterator的子接口,比iterator多上一些方法,同时也是List所特有的迭代器。Iterator只提供了判断、取出、删除的操作,如果想要有其他的操作,如添加、修改等,就需要使用其子接口ListIterator,该接口只能List集合的listIterator方法来获取
更加详细的解说ListIterator请点击链接在线文档
具体对象特点
List有几个常用的实现类,分别是ArrayList,Vector,LinkedList。Arraylist的特点是:数组结构,增删慢,查询快,有连续下标,线程不同步,增长因子为1.5。vector的特点是:数组结构,增删改查都慢,有连续下标,线程同步,增长因子2。Linkedlist的特点是:链表结构,增删快,查询慢,没有连续下标。
增长因子论证
输出的结果是
增长因子的初始值为10,当大于十时就会增大,也可以自己定义初始值,代码为:ArrayList li=new ArrayList<>(50); 50就是自己设置的初始值
Iterator.remove()与Collection.remove()的区别
如果我们用al.remove(obj)就会报java.util.ConcurrentModificationException的错误。原因是在这两个方法的源码中都有一个modCount的参数,用al每次进行修改操作都会使modCount+1,但是并没有重新给expectedModCount 赋值,所以就会报错。而使用it进行修改操作,在改变modCount的同时会给expectedModCount重新赋值,所以就可以。如果不是很了解的话请点击链接详解