?
Solved

Java Vector -clone BUG?? or just me?

Posted on 1998-08-04
4
Medium Priority
?
325 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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 400 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

Get real performance insights from real users

Key features:
- Total Pages Views and Load times
- Top Pages Viewed and Load Times
- Real Time Site Page Build Performance
- Users’ Browser and Platform Performance
- Geographic User Breakdown
- And more

Question has a verified solution.

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

Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
Suggested Courses
Course of the Month12 days, 3 hours left to enroll

752 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