aspose file tools*
The moose likes Beginning Java and the fly likes Access to methods in vector objects Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Access to methods in vector objects" Watch "Access to methods in vector objects" New topic
Author

Access to methods in vector objects

Hosh Nasi
Ranch Hand

Joined: Sep 10, 2004
Posts: 44
I am nto sure if I am doing this right, but I have a vector that contains objects of the same name with diffrent instance variables. These objects also have methods for searching through another vector using the instance variables when constructed.

My question is now that I have the vector built how do I call the method?

I was hoping for something easy like



however it gives a compiler error about arrays

Also I need a good way to loop through a vector searching for matching instance variables in an object.

Thanks!!
Dan Walin
Ranch Hand

Joined: Nov 11, 2003
Posts: 109
to call the method in one of the objects in the vector it should be more like:

to get the instance variable, I think it would be:

You can of course loop through the objects incrementing the index up to m.size() - 1
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

The syntax you're using (with the brackets) is for Arrays rather than Vectors.

An Array holds any type of Object or primitive, as long as every element is of the same type. Once created, an Array cannot be resized, but you can easily reference its elements by the index in brackets...

a[i].callMethod();

Unlike an Array, a Vector resizes as needed. It does have a method elementAt(i), which returns an Object reference. But anything you put in a Vector is automatically upcast to Object, so in order to call a specific method, you need to downcast that Object back to whatever type it actually is...

MyType t = (MyType) v.elementAt(i);
t.callMethod();

Actually, I'm guessing that an Array might serve you better here.


"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
sscce.org
Julian Kennedy
Ranch Hand

Joined: Aug 02, 2004
Posts: 823
Hi Hosh Nasi,

Welcome to the Ranch!

Firstly I should point out that java.util.Vector has effectively been superseded by java.util.ArrayList since the advent of the Collections Framework in Java 1.2. Best advice going forward is to use ArrayList. Vector is really only there for backward compatibility.

Having said that you access a Vector as follows:

You would iterate over a Vector as follows:


Since Java 1.2 Vector has implemented the List interface, so you can also use that to access its elements (confusing, huh?):


You can also iterate as follows:

The thing is there's not much point you learning that as it's largely history. You certainly shouldn't do it going forward.

Here's what you should use: ArrayList:


You can iterate as follows:

Notice that the methods for manipulating and iterating over a Vector (2nd pair of examples) and an ArrayList are identical. This is because they both use the List and Iterator interfaces. Cool, huh?

I think you may benefit from taking a look at Sun's Collections Tutorial.

Jules
[ September 11, 2004: Message edited by: Julian Kennedy ]
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Originally posted by Julian Kennedy:
Since Java 1.2 Vector has implemented the List interface, so you can also use that to access its elements (confusing, huh?)

Ah... That explains the redundancy. I've always regarded the Vector as a legacy sort of List, but never understood how it related to the newer Collections.
Hosh Nasi
Ranch Hand

Joined: Sep 10, 2004
Posts: 44
wow julian good stuff!

This is very helpful, goos info here for all

Look back through this I need to cast an object referenced in a List to search through it?

One of my biggest issues is that I am going to have for example a list of twenty objects. All the objects share the same name but have a few variables that when compared create uniqueness. My first step is to sort the list down to say five that share a "Message Type" value of 1. Then then from within the object call another classes method passing in some of is instance variables.

It is harder to explain then code I know It

Once again thanks for the replies. They are spot on and will help me big time!!!
Hosh Nasi
Ranch Hand

Joined: Sep 10, 2004
Posts: 44
Hey Julian I am trying to iterate through my List objects and it seems to be iterateing through all seven but the values arent changing?

Any ideas?



This windows is nto liking my code indention. Sorry if it looks jumbled
Hosh Nasi
Ranch Hand

Joined: Sep 10, 2004
Posts: 44
A little update:

I am really confused..

It looks like the right List is passed in, but when the program runs the while is just looping through the values stored in the object that ahs focus, it is not going to the selector objects to retrieve its values?

[ September 14, 2004: Message edited by: Hosh Nasi ]

::Edit:: I determined the Iterator is starting at the top? But, it is only using the last object and not folowing the index of the iterator??[ September 14, 2004: Message edited by: Hosh Nasi ]
[ September 14, 2004: Message edited by: Hosh Nasi ]
Julian Kennedy
Ranch Hand

Joined: Aug 02, 2004
Posts: 823
Are you sure that the 7 objects in the list are actually different? I doubt that the iterator is behaving as you suggest. It's not clear to me what you're trying to do. If you're still struggling perhaps you could put together a simple example that I can understand.

Jules
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Access to methods in vector objects