Transcript Vectors
Vectors
26-Jul-16
Vectors and arrays
A Vector is like an array of Objects
Differences between arrays and Vectors:
Arrays have special syntax; Vectors don’t
You can have an array of any type, but a Vector holds
Objects
An array is a fixed size, but a Vector expands as you add
things to it
This means you don’t need to know the size beforehand
2
Creating a Vector
import java.util.*;
Vector vec1 = new Vector();
Vector vec2 = new Vector(initialSize);
Vector vec3 = new Vector(initialSize,
increment);
3
Adding elements to a Vector
boolean add(Object obj)
Appends the object obj to the end of this Vector
Always returns true
This is for consistency with other, similar classes
void add(int index, Object element)
Inserts the element at position index in this Vector
The index must be greater than or equal to zero and less than
or equal to the number of elements in the Vector
4
Removing elements from a Vector
boolean remove(Object obj)
Removes the first occurrence of obj from this Vector
Returns true if an element was removed
void remove(int index)
Removes the element at position index from this Vector
void removeAllElements()
Removes all elements
5
Accessing elements of a Vector
Object elementAt(int index) or
Object get(int index)
Object firstElement()
Returns the component at position index
elementAt is an older method, retained for compatibility
with older programs
Returns the component at location 0
Object lastElement()
Returns the last component
6
Searching a Vector I
boolean contains(Object element)
int indexOf(Object element)
Tests if element is a component of this Vector
Returns the index of the first occurrence of element in this
Vector
Returns -1 if element was not found in this Vector
int indexOf(Object element, int index)
Returns the index of the first occurrence of element in this
Vector, beginning the search at index
Returns -1 if element was not found in this Vector
7
Searching a Vector II
int lastIndexOf(Object element)
int lastIndexOf(Object element, int index)
Returns the index of the last occurrence of element in this
Vector
Returns -1 if element was not found in this Vector
Returns the index of the last occurrence of element in this
Vector, searching backward from index
Returns -1 if element was not found in this Vector
All searching is done using equals
8
Getting information about a Vector
boolean isEmpty()
int size()
Returns true if this Vector has no elements
Returns the number of elements currently in this Vector
Object[ ] toArray()
Returns an array containing all the elements of this Vector in
the correct order
9
More about equals
There are many different notions of equality
Example: two sets are equal if they contain the same elements;
order of elements is irrelevant
Java defines public boolean equals(Object) in the
Object class, but
equals is defined to be the same as ==
It’s often a good idea to override equals for your own objects
If you do this, note that the argument should be a general Object
The String class (and some others) override equals
10
A minor nuisance
Suppose you define
You can do
bunny = vec.get(0);
Instead, you have to do
vec.add(bunny);
But you cannot do
Vector vec = new Vector();
Rabbit bunny = new Rabbit();
bunny = (Rabbit)vec.get(0);
Vectors are defined to hold Objects; when you get
something out, Java doesn’t know what kind you
expect it to be
11
Fixing the nuisance
You can extend Vector and override whatever
methods you choose
class RabbitVector extends Vector {
Rabbit elementAt(int i) {
return (Rabbit)super.get(i);
}
}
Now you can do
Vector vec = new RabbitVector();
vec.add(bunny);
bunny = vec.get(0);
12
Conclusion
A Vector is like an array of Objects
The advantage of a Vector is that you don’t need to
know beforehand how big to make it
The disadvantage of a Vector is that you can’t use
the special syntax for arrays
You should never use an array that you hope is “big
enough”--use a Vector instead
13
The End
14