前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >ArrayList 与 Vector 区别

ArrayList 与 Vector 区别

原创
作者头像
代码小李
发布2025-01-30 18:27:51
发布2025-01-30 18:27:51
290
举报

ArrayListVector 都是 Java 集合框架中常用的列表实现,它们都实现了 List 接口。尽管它们提供了类似的功能,但在内部实现和性能特性上存在显著差异。以下是 ArrayListVector 的主要异同点:

相同点

  1. 接口实现:两者都实现了 List 接口,因此都支持列表的基本操作,如添加、删除、获取和设置元素。
  2. 内部实现:两者都是基于动态数组实现的,底层是一个对象数组。
  3. 允许 null 值:两者都允许存储 null 值。

不同点

  1. 线程安全性
    • ArrayList:不是线程安全的,如果需要在多线程环境中使用,需要外部同步。
    • Vector:是线程安全的,内部方法都进行了同步(synchronized),因此性能相对较差。
  2. 性能
    • ArrayList:由于没有同步开销,性能通常优于 Vector
    • Vector:由于每个方法都进行了同步,性能较差,尤其是在高并发环境下。
  3. 扩容机制
    • ArrayList:当数组容量不足时,会自动扩容,通常扩容为原容量的 1.5 倍(具体倍数取决于实现)。
    • Vector:当数组容量不足时,会自动扩容,通常扩容为原容量的 2 倍(具体倍数取决于实现)。
  4. 方法签名
    • ArrayList:方法签名没有 synchronized 关键字。
    • Vector:方法签名包含 synchronized 关键字,例如 public synchronized boolean add(E e)

示例代码

以下是一些示例代码,展示了如何使用 ArrayListVector

代码语言:java
复制
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

public class ListExample {
    public static void main(String[] args) {
        // 创建 ArrayList
        List<String> arrayList = new ArrayList<>();
        arrayList.add("A");
        arrayList.add("B");
        arrayList.add("C");

        // 创建 Vector
        List<String> vector = new Vector<>();
        vector.add("X");
        vector.add("Y");
        vector.add("Z");

        // 访问元素
        System.out.println("ArrayList 第二个元素: " + arrayList.get(1));
        System.out.println("Vector 第二个元素: " + vector.get(1));

        // 插入元素
        arrayList.add(1, "D");
        vector.add(1, "W");

        // 删除元素
        arrayList.remove(1);
        vector.remove(1);

        // 打印列表
        System.out.println("ArrayList: " + arrayList);
        System.out.println("Vector: " + vector);
    }
}

总结

  • ArrayList 适合单线程或不需要线程安全的场景,性能较好。
  • Vector 适合需要线程安全的场景,但性能较差。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相同点
  • 不同点
  • 示例代码
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档