I can think of one way that this would occur. What does your getItemByID method look like? If it, for some reason, returns the same item but with different values, then I would expect these results.
Try editing your code as such:
Of course, if you've overridden .toString(), comment out that override for
testing! If you discover that you are adding the same object again and again, then you will need to change how the getItemByID method works.
Other than that, I can't think of anything else that would cause something like this. Certainly the problem is not in the section of code. And, outdated as Vectors are (use Lists instead), I don't think that they've developed any senility problems
.