您的位置:首页 > 其它

List子类和父类的区别和作用

2019-05-19 22:57 183 查看

标题

List与父类的介绍

当数据多的时候,则采用对象的方式来设置值;但当对象多的时候,则采用集合也就是List或他的“兄弟”set来存对象;而获取数据,则需要用到他俩的父类(Collection)里的内部类( Iterator )来获值,对于List也可以使用自己实现的ListIterator来获值,set则没有;ListIterator可以看作是Iterator的升级版。

List与子类的介绍

对于List,因为他是有序,元素可以重复 ,该集合体系有索引的,所以他的子类都有他的这些优点,但三个子类中Arraylistvector是有连续下标的,但另一个子类Linkedlist并没有,下面来介绍这三个子类:

  1. Arraylist
    Arraylist拥有特有的方法,他部分发方法比如add(),remove(),set(),get()都可以根据下标(index)来进行操作。
    Arraylist也有特殊的迭代器(ListIterator),相比于父类(List)的迭代器(lterator)区别在于Listlterator多了几个可以根据index进行操作的方法:
    Listlterator:
    lterator:

    ArrayList优点是 查询快,因为是可以根据下标进行查询的且线程不同步,但随着而来的缺点,就是增删慢,因为如果增加一个元素到中间,那么下标在他之后的元素都得更改下标,删除也是一个道理,所以他的缺点总体来讲就是进行增删时会影响到其他元素,从而拖慢速度。
    ArrayList的增长因子为1.5,初始大小为10。增长因子也就是:当定义了一个ArrayList数组长度时里面的数据达到最大值时,数组扩大的倍数。若一个ArrayList定义为50;当超出这个范围时,他扩大1.5倍,也就是75。

  2. vector
    vector相对于其他数组不同的地方,他的特点就是拥有枚举。枚举就好比迭代器一样,也是可以进行便利的。相比于Arraylist他的线程是同步的且他的增长因子为2.0,初始值也是10。

  3. Linkedlist
    上面提到过,Linkedlist作为List的子类,和另外两个数组不同的是没有连续下标,因为他是链表结构,何为链表,也就是每个元素是通过记住前一个元素和记住后一个元素来判断位置的,这种方式的优点是增删快,因为不需要影响到其他元素,但缺点是查找比较慢,因为他需要一个一个的去排查每个元素来查找。
    作为一个特有的链表结构,他也有特有的方法,addFirst()和addLast();
    可以使用这两个方法创建两个存储结构:堆栈存储结构和队列存储结构。
    堆栈结构特点:先进后出,也就是先增加的一个元素排在最后。
    队列结构特点:先进先出,先增加的一个元素排在第一位。
    而在jdk1.6版本则用offerFirst()和offreLat()替换了这两个方法。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐