Java Collection中的Vector如何工作

时间:2012-06-02 05:47:59

标签: collections vector

Java Collection中的Vector如何在内部工作,以便它可以接受任何类型的对象

4 个答案:

答案 0 :(得分:3)

在内部,Vector只将对象存储为Object类型。因为所有对象都从Object继承,所以它可以存储所有对象。

原始值(例如int和double)不会从Object继承,因为它们不是对象。为了解决这些问题,Java会根据需要将它们从原始值转换为动态对象。因此int 5将被转换为一个持有5的Integer对象,而double 4.3将被转换为一个持有4.3的Double对象。这被称为自动拳击。

Java也会自动执行相反的操作,从Integer转换为int。这被称为'解拳'。

因此,它允许它存储任何对象,但是当您使用Vector进行编码时,您可以更具体。例如矢量或矢量。您可以使用“泛型”实现对Vector中可以存储的内容的限制,该“泛型”允许您将类型作为参数传递给类。在那些示例中,参数是String和Integer。

然而,泛型仅在编译时强制执行;在运行时,Vector将继续在内部使用Object。

这意味着当您的应用程序运行时,Vector和Vector之间没有区别。它们完全相同,实际上只有Vector(没有Vector或Vector确实存在)。它们之间的区别完全在编译时,在应用程序运行之前,使用Vector,只有在您只存储String对象时才会编译。

答案 1 :(得分:1)

它的工作原因是Polymorphism,这是面向对象语言(如Java)的一个关键思想,是four pillars of object oriented programming之一。

Vector是Object的集合类型,由于Java中的所有类都继承自Object,因此Vector可以接受任何类型的对象。

答案 2 :(得分:0)

  1. 向量的初始容量为10。
  2. 我们可以为Vector定义Capacityincrement,如果不定义CapacityIncrement,那么Vector grow()将为double。
  3. 所有方法都是同步的,因此线程安全就在那里。
  4. 返回此向量的分量的枚举
  5. 与ArrayList相比,性能较慢

答案 3 :(得分:-1)

Vector与List相同。唯一不同的是Vector的方法是同步的,而对于List,同步是程序员的责任。