Re: Directly Modify Vector Item
Jimmie wrote:
Is it possible to directly manipulate an item within a Vector (or any
other AbstractCollection).
Yes. Fetch the item reference from the collection, and
call whatever methods it provides:
Vector myVec = new Vector();
...
Thing thing = (Thing)myVec.get(3);
thing.doSomething(42);
thing.somethingElse("XLII");
thing.repaint();
Basically, I retrieve and manipulate vectors in the following way:
Vector myVec = new Vector();
// populate...
for (int i = 0; i < myVec.size; i++) {
Should be `myVec.size()'.
String myStr = (String)myVec.get(i);
What's the purpose of this? You make no use of the
reference you've retrieved from the Vector; all you do is
forget about it.
myStr = "String " + i;
myVec.setElementAt(myStr, i);
}
While arrays can simply modify directly:
for (int i = 0; i < myVec.size; i++) {
Should be `myArray.length'.
myArray[i] = "String " + i;
}
The first method seems cumbersome and inefficient, especially when
using a class other than a String (one with many modifications to be
made).
These samples don't "manipulate an item within a Vector;"
rather, they manipulate the Vector itself, changing its
contents by causing it to refer to different objects than it
used to. Here's a rewrite of the first:
for (int i = 0; i < myVec.size(); i++) {
myVec.setElementAt("String " + i, i);
}
.... which looks fairly similar to the array example, does
it not?
As for "inefficient," what have your *measurements* shown?
If you use such language in the absence of measurements or at
least of calculations, wash out your mouth with soap.
--
Eric Sosman
esosman@ieee-dot-org.invalid