Solved

Java Vector -clone BUG?? or just me?

Posted on 1998-08-04
4
317 Views
Last Modified: 2010-04-16
Ok I have a source vector and wish to "loop" through it (note source may be incomplete, but the priniple is there)
However due to the Enumeration we may only loop an object once ! To solve this I though clone would be good,
because then the src vector is never looped and thus always is valid. or ??

Vector src = new Vector()
src.addElement()  // add all elements of type (StringTokenizer)
Vector tmp = (Vector)src.clone()
Vector tmp2 = (Vector)src.clone()
while( (StringTokenizer)tmp.hasMoreElements() ) {}
while( (StringTokenizer)tmp2.hasMoreElements() )
{
 //  We will never enter here !!
}

Any ideas to why we do not enter the second loop ?? It should be 2 sperate objects and thus we should be allowed to loop then independantly ??
0
Comment
Question by:CrypToniC
4 Comments
 
LVL 2

Expert Comment

by:shchuka
ID: 1230868
Why do you want to use Enumeration?  You can use a simple for-loop like this:

Vector src = new Vector();
src.addElement();
.
src.addElement();

for(int i=0; i<src.size(); i++) {
    StringTokenizer stk = (StringTokenizer)src.elementAt(i);
    // Do whatever you want with this tokenizer
}   // Go to the next one...

You can performed this loop as many times as you want...
0
 
LVL 16

Expert Comment

by:imladris
ID: 1230869
I must agree with shchuka that enumeration may be overcomplicated for what you want. It would be helpful if you explained why you think you need enumeration. Also, assuming you do, the critical bit as to why it does not enter the second loop will lie in how the enumeration object is acquired. In fact, as the quoted code stands, it doesn't look like it should even compile. tmp and tmp2 are Vector objects, and the Vector class does not provide a hasMoreElements method. To do enumeration you must obtain an enumeration object.

Either you in fact have a compile error, or the code was posted in error. Please illuminate your question with some additional information.

0
 
LVL 3

Accepted Solution

by:
mjenkins earned 100 total points
ID: 1230870
The reason that the code fragment never enters the second loop is that you neglected to call nextElement() which means that you are looping forever on the first element. If you are concerned about the structure of the Vector changing while you iterate through it, by all means follow your original idea.

Just remember to use the Enumeration properly this time. It doesn't iterate unless you call nextElement().


Vector src = new Vector()
   // add all elements of type(StringTokenizer)
    src.addElement()  
    Vector tmp = (Vector)src.clone();
    Vector tmp2 = (Vector)src.clone();
    Enumeration enum = tmp.elements();
    while( enum.hasMoreElements() )
    {
      (StringTokenizer)enum.nextElement();
    }

    enum = tmp2.elements();
    while( enum.hasMoreElements() )
    {
      (StringTokenizer)enum.nextElement();
    }

BTW: Ignore the advice that is telling you to use a for loop in place of the Enumeration. It would not only be bad style, it would be "bad OO"
0
 
LVL 1

Author Comment

by:CrypToniC
ID: 1230871
Hahaha ooops! I guess I was alittle too tired! I should have seen that, I used more than 1 hour without solving that bug Thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
groupNoAdj 7 84
where is session ID cache stored 1 46
Java Filesystem manipulation of Word Docx file (find replace text) 3 63
MySqlDump not dumping triggers 1 13
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now