- Vectors in Java – The Dynamic Arrays
- An example of vector Java class with strings
- An example of integer type vector class
- More about vectors
- How to declare vector?
- Creating vector from other collection type
- Vector in Java Tutorial with Examples
- How to create new objects of the Java Vector class?
- Java Vector
- Java Vector vs. ArrayList
- Creating a Vector
- Methods of Vector
- Add Elements to Vector
- Access Vector Elements
- Remove Vector Elements
- Others Vector Methods
- Table of Contents
Vectors in Java – The Dynamic Arrays
In the arrays chapter, we learned the standard arrays in Java are of fixed size. Once created, the size of the array cannot be changed or you can say, the elements in the standard array cannot be added or removed after creation.
In Java programming, you will need to work with arrays that are dynamic; that allow adding or removing elements after creation. For that purpose, you may use vectors in Java that implement dynamic arrays.
Before going into further details, have a look at the examples of using the vector class in Java programs.
An example of vector Java class with strings
Before describing how to declare and access vectors, let me show you a few examples of using this in Java programs.
In this example, a vector of string elements is created. Three elements are added by using the add method after vector declaration. This is followed by using the for loop for displaying the elements:
The Java code with vector class:
An example of integer type vector class
In the following example, the vector of integer elements is created. Five elements are added in the vector after declaring it by using the add method.
The for-each loop is used for displaying the vector items as shown below:
More about vectors
The vectors are synchronized unlike the ArrayList (that are also dynamic). The vectors use capacity and capacityIncrement for optimizing the storage management. The capacity, which is as large as the vector size is generally larger because the vector size increase in chunks as components are added to the vector.
Also, from Java 2 platform, the vector class implements the List interface. The ArrayList also implements the List interface; however, as mentioned earlier, ArrayList is not synchronized. You should prefer using the vector class if the thread-safe implementation is required. Otherwise, prefer using the ArrayList.
See the following section for demos and code of vector including methods provided by the vector Java class, but first, have a look at how you may declare and access vector elements.
How to declare vector?
Following is the syntax for creating a vector in Java program:
The Vector class is followed by the type and vector name on the left side. On the right side, the new keyword is used which is followed by Vector class. Optionally, you may specify the size of vector, e.g.
If you do not specify the data type at the time of declaration, the vector may contain different types of elements like Strings, integers etc.
Creating vector from other collection type
You may also create a vector by using the other collection type like ArrayList. Following is the syntax:
Vector vector_name = new Vector (Collection c) ;
See the following example where I have created an ArrayList with five elements. This is followed by creating a vector where that ArrayList object is specified. Finally, a for loop is used for displaying the elements of that vector:
Code for creating a vector from an ArrayList:
Vector in Java Tutorial with Examples
Java Vector tutorial with examples will help you understand how to use Vector class in an easy way. The Vector in Java is an implementation of the List interface that grows automatically as we add elements to it.
The Vector class is contained in the java.util package so we have to import the java.util package using the import statement to use the Vector class in the code.
The Vector class was a part of Java 1.0, but in Java 2, the Vector class was rewritten to implement the List interface and thus it became the part of the Java Collection Framework.
Unlike the ArrayList class in Java, the Vector is synchronized but it comes with a cost. If the application does not need thread safety, it is recommended to use the ArrayList instead of the Vector class to get better performance.
Like the ArrayList, the Vector class is also a dynamic array of objects. It maintains an internal array to store its elements and the size of this array is increased or decreased automatically as needed. The size of this internal array is called the capacity of the Vector.
The size of the internal array is increased automatically by a certain number when the vector size becomes greater than the internal array size. This certain number is called the capacity increment of the Vector.
The Vector elements can be accessed using the index just like an array. The index of the elements starts from 0 and ends at the size of the vector – 1 index.
How to create new objects of the Java Vector class?
The Vector class in Java provides several constructors using which we can create new objects of it. The default constructor creates a new and empty vector object.
Java Vector
The Vector class is an implementation of the List interface that allows us to create resizable-arrays similar to the ArrayList class.
Java Vector vs. ArrayList
In Java, both ArrayList and Vector implements the List interface and provides the same functionalities. However, there exist some differences between them.
The Vector class synchronizes each individual operation. This means whenever we want to perform some operation on vectors, the Vector class automatically applies a lock to that operation.
It is because when one thread is accessing a vector, and at the same time another thread tries to access it, an exception called ConcurrentModificationException is generated. Hence, this continuous use of lock for each operation makes vectors less efficient.
However, in array lists, methods are not synchronized. Instead, it uses the Collections.synchronizedList() method that synchronizes the list as a whole.
Note: It is recommended to use ArrayList in place of Vector because vectors less efficient.
Creating a Vector
Here is how we can create vectors in Java.
Vector vector = new Vector<>();
Here, Type indicates the type of a linked list. For example,
// create Integer type linked list Vector vector= new Vector<>(); // create String type linked list Vector vector= new Vector<>();
Methods of Vector
The Vector class also provides the resizable-array implementations of the List interface (similar to the ArrayList class). Some of the Vector methods are:
Add Elements to Vector
- add(element) — adds an element to vectors
- add(index, element) — adds an element to the specified position
- addAll(vector) — adds all elements of a vector to another vector
import java.util.Vector; class Main < public static void main(String[] args) < Vectormammals= new Vector<>(); // Using the add() method mammals.add("Dog"); mammals.add("Horse"); // Using index number mammals.add(2, "Cat"); System.out.println("Vector: " + mammals); // Using addAll() Vector animals = new Vector<>(); animals.add("Crocodile"); animals.addAll(mammals); System.out.println("New Vector: " + animals); > >
Vector: [Dog, Horse, Cat] New Vector: [Crocodile, Dog, Horse, Cat]
Access Vector Elements
- get(index) — returns an element specified by the index
- iterator() — returns an iterator object to sequentially access vector elements
import java.util.Iterator; import java.util.Vector; class Main < public static void main(String[] args) < Vectoranimals= new Vector<>(); animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); // Using get() String element = animals.get(2); System.out.println("Element at index 2: " + element); // Using iterator() Iterator iterate = animals.iterator(); System.out.print("Vector: "); while(iterate.hasNext()) < System.out.print(iterate.next()); System.out.print(", "); >> >
Element at index 2: Cat Vector: Dog, Horse, Cat,
Remove Vector Elements
- remove(index) — removes an element from specified position
- removeAll() — removes all the elements
- clear() — removes all elements. It is more efficient than removeAll()
import java.util.Vector; class Main < public static void main(String[] args) < Vectoranimals= new Vector<>(); animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); System.out.println("Initial Vector: " + animals); // Using remove() String element = animals.remove(1); System.out.println("Removed Element: " + element); System.out.println("New Vector: " + animals); // Using clear() animals.clear(); System.out.println("Vector after clear(): " + animals); > >
Initial Vector: [Dog, Horse, Cat] Removed Element: Horse New Vector: [Dog, Cat] Vector after clear(): []
Others Vector Methods
Methods | Descriptions |
---|---|
set() | changes an element of the vector |
size() | returns the size of the vector |
toArray() | converts the vector into an array |
toString() | converts the vector into a String |
contains() | searches the vector for specified element and returns a boolean result |