ArrayList vs. Vectors in Java if thread safety isn't a concern

后端 未结 5 2059
遇见更好的自我
遇见更好的自我 2020-12-01 03:52

Is there really that much of a difference between the performance of Vector and ArrayList? Is it good practice to use ArrayLists at all times when

5条回答
  •  不思量自难忘°
    2020-12-01 04:17

    ArrayList vs. Vectors

    1. Synchronization and thread-safety

    First and foremost difference between Vector and ArrayList is that Vector is synchronized and ArrayList is not, what it means is that all the method which structurally modifies Vector e.g. add () or remove () are synchronized which makes it thread-safe and allows it to be used safely in a multi-threaded and concurrent environment. On the other hand ArrayList methods are not synchronized thus not suitable for use in multi-threaded environment.

    2. Speed and Performance

    ArrayList is way faster than Vector. Since Vector is synchronized and thread-safe it pays price of synchronization which makes it little slow. On the other hand ArrayList is not synchronized and fast which makes it obvious choice in a single-threaded access environment.

    3. Capacity

    Whenever Vector crossed the threshold specified it increases itself by value specified in capacityIncrement field while you can increase size of ArrayList by calling ensureCapacity() method.

    4. Enumeration and Iterator

    Vector can return enumeration of items it hold by calling elements() method which is not fail-fast as opposed to Iterator and ListIterator returned by ArrayList.

    5. Legacy

    Another point worth to remember is Vector is one of those classes which comes with JDK 1.0 and initially not part of Collection framework but in later version it's been re-factored to implement List interface so that it could become part of collection framework

提交回复
热议问题