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