IBM Interview Questions: vector implementation
Qu5: Tell in a web based project where we need to implement Vector..
Answer:
java.util
Class Vector
java.lang.Object
java.util.AbstractCollection
java.util.AbstractList
java.util.Vector
- All Implemented Interfaces:
- Cloneable, Collection, List, RandomAccess, Serializable
- Direct Known Subclasses:
- Stack
- public class Vector
- extends AbstractList
- implements List, RandomAccess, Cloneable, Serializable
Vector
class implements a growable array of objects. Like an array, it contains components that can be accessed using an integer index. However, the size of a Vector
can grow or shrink as needed to accommodate adding and removing items after the Vector
has been created.Each vector tries to optimize storage management by maintaining a
capacity
and a capacityIncrement
. The capacity
is always at least as large as the vector size; it is usually larger because as components are added to the vector, the vector's storage increases in chunks the size of capacityIncrement
. An application can increase the capacity of a vector before inserting a large number of components; this reduces the amount of incremental reallocation.As of the Java 2 platform v1.2, this class has been retrofitted to implement List, so that it becomes a part of Java's collection framework. Unlike the new collection implementations, Vector is synchronized.
The Iterators returned by Vector's iterator and listIterator methods are fail-fast: if the Vector is structurally modified at any time after the Iterator is created, in any way except through the Iterator's own remove or add methods, the Iterator will throw a ConcurrentModificationException.
Thus, in the face of concurrent modification, the Iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future. The Enumerations returned by Vector's elements method are not fail-fast.
Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast iterators throw ConcurrentModificationException on a best-effort basis.
Therefore, it would be wrong to write a program that depended on this exception for its correctness: the fail-fast behavior of iterators should be used only to detect bugs.
---------------------------------------------------------------------------------------------------------------------------
If you know better answer..Please reply......
Comments
Post a Comment