相同点:
1、都是有序集合。
2、数据不允许重复。
3、都实现了list接口。
4、都是通过数组实现的。
5、数组进行复制、移动、代价比较高,因此,适合随机查询和遍历,不适合插入和删除。
不同点:
1、ArrayList属于线程不安全(线程不同步)即当多线程进行对ArrayList集合的操作时,有可能对数据进行不正确的操作。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些。
2、Vector是线程安全的(同步线程)即当在同一时刻只能有一个线程进行对Vector集合的操作时,但是Vector要做到线程同步,需要大量的花费,可能消耗大量的内存或者CPU。如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们再去考虑和编写线程安全的代码。
3、ArrayList在内存不够时默认扩展1.5倍,Vector是默认扩展1倍。
4、Vector提供indexOf(object,start)接口,ArrayList没有。