Java——List

List接口:允许数据重复      在进行单个集合处理时,优先考虑List接口

  • Java类集:数据结构、多线程——动态数组(当元素个数达到最大值时,动态增加容量)(解决数组长度固定问题)
    • 在List接口中,拓展了两个重要的方法()
      • 1、public E get(int index):根据索引下标取得数据
      • 2、public E set(int index,E element):根据索引下标更新数据,返回修改之前的数据
    • 在List接口下有三个常用子类:ArrayList、Vector、 LinkedList。这三个子类在使用上没有任何区别。
      • public abstract class ArrayListVector LinkedListAbstractList<E> extends AbstractCollection<E> implements List<E>
      • public class ArrayList<E> extends AbstractList<E>
      • public class Vector<E> extends AbstractList<E>

implements List<E>,RandomAccess,Cloneable,java.io.Serializable

public class LinkedList<E> extends AbstractSequentialList<E>

implements List<E>,Deque<E>,Cloneable,java.io.Serializable

  • AbstractList类的作用是统一覆写ArrayList、Vector、 LinkedList三个类需要的方法

List:[3, 5, 0]------------>list.set(1,90)--->返回5------->得到[3, 90, 0]

List:[1, 3, 5, 0]----------->list.remove(0)------->返回1------->得到[3, 5, 0]

list.contains(o)----->判断是否包含指定元素---->o==null--->有元素为null则为true

   o!=null----->为object的equals方法,比地址

所以自定义类要使用List的contains、remove方法该类必须要覆写equals方法来使用contains、remove

 

 

ArrayList、Vector、 LinkedList的区别

1ArrayList与Vector的区别

答:ArrayList使用最多的子类。使用上没有区别,因为都用的时List的接口,这三个类都是List的子类

1.1、出现版本:

ArrayList是JDK1.2

Vector是JDK1.0(出现在List、Collection接口之前)

1.2、初始化策略区别:调用无参构造时:

Vector在午餐构造执行后,将对象数组大小初始化为10

ArrayList采用懒加载策略,在构造方法阶段并不初始化对象数组,在第一次添加元素时才初始化数组,大小为10,ArrayList扩容时,变为原来的1.5倍,将原来的数组内容拷贝一份,仍到新的里面。

1.3、扩容策略

ArrayList:int newCapacity = oldCapacity + (oldCapacity>>1);变为原来的1.5倍

vector:int newCapacity = oldCapacity +

((capacityIncrement > 0) ? capacityIncrement : oldCapacity );

变为原来的2倍

1.4、线程安全性

ArrayList采用异步处理,线程不安全,效率较高

Vector采用在方法上加锁,线程安全,效率较低(即便要使用线程安全的List,也不用Vextor)

1.5、遍历

Vector支持较老的迭代器:Enumeration()

ArrayList不支持

2ArrayList与Vector的共同点

答:底层均使用数组实现

3、ArrayList与LinkedList的区别

答:ArrayList底层采用数组实现

LinkedList底层双向链表实现,异步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值