List子类和父类的区别和作用
标题
List与父类的介绍
当数据多的时候,则采用对象的方式来设置值;但当对象多的时候,则采用集合也就是List或他的“兄弟”set来存对象;而获取数据,则需要用到他俩的父类(Collection)里的内部类( Iterator )来获值,对于List也可以使用自己实现的ListIterator来获值,set则没有;ListIterator可以看作是Iterator的升级版。
List与子类的介绍
对于List,因为他是有序,元素可以重复 ,该集合体系有索引的,所以他的子类都有他的这些优点,但三个子类中Arraylist和vector是有连续下标的,但另一个子类Linkedlist并没有,下面来介绍这三个子类:
-
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。 -
vector ;
vector相对于其他数组不同的地方,他的特点就是拥有枚举。枚举就好比迭代器一样,也是可以进行便利的。相比于Arraylist他的线程是同步的且他的增长因子为2.0,初始值也是10。
-
Linkedlist ;
上面提到过,Linkedlist作为List的子类,和另外两个数组不同的是没有连续下标,因为他是链表结构,何为链表,也就是每个元素是通过记住前一个元素和记住后一个元素来判断位置的,这种方式的优点是增删快,因为不需要影响到其他元素,但缺点是查找比较慢,因为他需要一个一个的去排查每个元素来查找。
作为一个特有的链表结构,他也有特有的方法,addFirst()和addLast();
可以使用这两个方法创建两个存储结构:堆栈存储结构和队列存储结构。
堆栈结构特点:先进后出,也就是先增加的一个元素排在最后。
队列结构特点:先进先出,先增加的一个元素排在第一位。
而在jdk1.6版本则用offerFirst()和offreLat()替换了这两个方法。
- 关于父类与子类的类型转换(TStrings与TStringList)
- 子类对父类中虚方法的处理有重写(override)和覆盖(new)的区别
- 2018/01/07JAVA 基础 / 接口与继承:重写【子类继承并覆盖父类的对象方法】、隐藏【子类继承并覆盖父类的类方法】与实现类实现接口方法の区别
- 把父类list集合中元素放在子类list集合中
- 静态方法和非静态方法在父类和子类之间的区别
- List的子类特点区别及其优缺点
- 父类 xx = new 子类()与子类 xx = new 子类()的区别
- C#下 子类继承父类的虚方法后 使用override重写父类方法 和 不使用override重写有什么区别?
- Python - 子类继承父类 和 Java有什么区别
- 继承的意义:extend,继承中的构造方法,方法重写.重写与重载的区别.父类的引用指向子类的对象
- 子类和父类中的super、this的区别
- C#中子类对父类中虚方法的处理有重写(override)和覆盖(new),他们有什么区别?
- List具体子类,及之间的区别
- Java-Map和List类中子类的区别
- Java中普通代码块,构造代码块,静态代码块区别及运行顺序(子类,父类中运行顺序)
- C#List混装存储子类和父类对象并进行排序操作
- 20140408 父类指针指向子类对象 ;delete ;static作用
- Python——简述方法调用、父类继承、装饰器的作用和区别
- Java、C++中子类对父类函数覆盖的可访问性缩小的区别介绍
- List,map,set的区别和作用