Vectors in java programming

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

Table of Contents

Источник

Class Vector

The 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.

The iterators returned by this class’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 the elements method are not fail-fast; if the Vector is structurally modified at any time after the enumeration is created then the results of enumerating are undefined.

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.

As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector .

Источник

Читайте также:  Nosql базы данных python
Оцените статью