向量声明语法

时间:2018-09-23 07:48:38

标签: java vector

我是Java的新手,并且被Vector声明之间的语法差异所困扰。

Vector v = new Vector(SIZE, GROWABLESIZE);

还有这个

{{1}}

我知道这两种方法都会创建一个新的Object类型的Vector(可广播到其他类型),并且最多可以存储SIZE个对象,但是它们在内部/功能上有何不同?

我在与JTable合作进行大学项目时学习了第一个语法,后来的语法在讲座(和书籍)中讲授。我无法区分两者。

1 个答案:

答案 0 :(得分:1)

运行时的行为差异在于,第二个为capacityIncrement指定了一个值:

  

capacityIncrement :在以下情况下增加容量的数量   向量溢出

编译时的区别是第二个使用原始类型。这意味着编译器将发出警告。
即使您想将Object放入/获得此向量(通常是一种不好的做法),但声明为Vector<Object>的泛型类型会更清楚并表明您的意图。

所以:

Vector<Object> v = new Vector<>(SIZE);

或那个:

Vector<Object> v = new Vector<>(SIZE, GROWABLESIZE);

更好。

但是通常您不希望使用Vector,它是线程安全的旧类,主要是出于回溯兼容性的原因而仍然存在。
通常,Collections.synchronizedList()静态方法是使List实例线程安全的更好/更灵活的方法。