ST.*_*ST. 28 java vector arraylist
以前我总是认为当长度未知时,Vector可用于非描述对象.据我所知,我认为它也是线程安全的
什么是Vector不应该再使用的改变,替代方案是什么?
Pau*_*and 38
你应该使用ArrayList而不是Vector.Vector使用内部同步,但这对于实际的一致性来说很少是足够好的,并且只有在不需要时才会减慢执行速度.
另请参阅此stackoverflow问题.
hex*_*ium 16
你可以ArrayList改用.
如果您需要同步版本,您可以执行以下操作:
ArrayList arrayList = new ArrayList();
List synchList = Collections.synchronizedList(arrayList);
Run Code Online (Sandbox Code Playgroud)
Vector是Java 1.0的遗留集合类.在Java 1.2(很久以前!)中,添加了集合框架,其中包括新的集合类,例如ArrayList和HashMap,它们旨在替换遗留类Vector和Hashtable.
如前所述,遗留集合类具有内置同步,这对于许多应用程序来说是不必要的.同步具有性能开销,因此如果没有必要,则不应使用它.
在某些情况下(当您的程序是多线程的,并且多个线程访问相同的数据时),您需要同步您的集合.然后有些人会使用旧的Vector或Hashtable类,但更好的方法是使用同步包装器,例如ArrayList:
// Your standard, unsynchronized list
List<String> data = new ArrayList<String>();
// Use this to put it into a synchronization wrapper
List<String> syncedData = Collections.synchronizedList(data);
Run Code Online (Sandbox Code Playgroud)
有关Collections.synchronizedList()更多信息,请参阅(和其他方法)的API文档.