Iterate over hashtabel in reverse order

  • Thread starter Thread starter Boni
  • Start date Start date
B

Boni

Dear all,

following code iterates thru the hash table.

Dim _Enumerator As IDictionaryEnumerator = _myhashtable.GetEnumerator

While _Enumerator.MoveNext()

....

End While



But I can't find a way to iterate in reverse direction. Something like...

Dim _Enumerator As IDictionaryEnumerator = _myhashtable.GetReverseEnumerator

While _Enumerator.MovePrevious()

....

End While

It is possible?

Thanks
 
Just an addtion. I expect there could be answers saying, that hashtable is
not a right collection for that. What is a right one? I need to put/get
value/key (with key check). And I need to be able to iterate in both
directions.
Thanks,
Boni
 
How about creating your own class that inherits from Hashtable? Give it a
public property like InterationDirection, and then implement your own
enumerator that inspects the property and moves its cursor in the
appropriate direction. See the help file on IEnumerable and Enumerator to
see how to implement your own.

Tom Dacon
Dacon Software Consulting
 
Dear Tom,
Do you know how to move cursor in oposite direction on hashtable? It is
exactly what I am looking for and can't figure out.
 
Well what did you thought of the collection object ???


there you can use keys and indexes ( you can retrieve a value by its key
value or by its index in the collection )

as you can also read out the collection count and access the values by there
index , it is easy to loop through the collection in bot directions or even
start somewhere in the middle

well hope to have given you some ideas

regards and happy VB coding :-)

Michel Posseth [MCP]
 
Yes I did,
but I want to use .NET collections, and AFAK collection object is a VB
collection (and it is 1-based, what I hate:).
There should be a way to have the same functionality in .NET collections, I
hope.
But never the less, Thanks for the answer.
m.posseth said:
Well what did you thought of the collection object ???


there you can use keys and indexes ( you can retrieve a value by its key
value or by its index in the collection )

as you can also read out the collection count and access the values by
there index , it is easy to loop through the collection in bot directions
or even start somewhere in the middle

well hope to have given you some ideas

regards and happy VB coding :-)

Michel Posseth [MCP]



Boni said:
Just an addtion. I expect there could be answers saying, that hashtable
is not a right collection for that. What is a right one? I need to
put/get value/key (with key check). And I need to be able to iterate in
both directions.
Thanks,
Boni
 
Normally movenext is implemented like this

Function MoveNext() As Boolean Implements IEnumerator.MoveNext

nIndex = nIndex + 1

Return (nIndex <= Collection.Count)

End Function

and it is also easy to implement MovePrevious.

But for hashtable it seems to be not possible to get value by index. (I am
wondering, how the normal evumerator for hashtable is implemented). Did I
missed something?
 
hmmm well i do not agree on that ,, but that is a total different discussion
and i will not bother you with that :-)

however the answer for your question can in my opinion be found at my
personal uber guru`s website ( Francesco Balena )
read this
http://www.vb2themax.com/ShowContent.aspx?ID=c527dcd9-eb27-4a79-83b9-a6cf9b7953f4
and see also on the bottom that it also supports Hashtables

regards

Michel Posseth [MCP]


Boni said:
Yes I did,
but I want to use .NET collections, and AFAK collection object is a VB
collection (and it is 1-based, what I hate:).
There should be a way to have the same functionality in .NET collections,
I hope.
But never the less, Thanks for the answer.
m.posseth said:
Well what did you thought of the collection object ???


there you can use keys and indexes ( you can retrieve a value by its
key value or by its index in the collection )

as you can also read out the collection count and access the values by
there index , it is easy to loop through the collection in bot
directions or even start somewhere in the middle

well hope to have given you some ideas

regards and happy VB coding :-)

Michel Posseth [MCP]



Boni said:
Just an addtion. I expect there could be answers saying, that hashtable
is not a right collection for that. What is a right one? I need to
put/get value/key (with key check). And I need to be able to iterate in
both directions.
Thanks,
Boni
 
Why not just use a datatable, there is so much build in that?

keep in mind that in comparisation to a hashtable it is much much slower (
even better as far as i know the hashtable is the fastest data retriever
there is )

michel posseth
 
keep in mind that in comparisation to a hashtable it is much much slower
( even better as far as i know the hashtable is the fastest data retriever
there is )

Depends how you use it.

When you do
a = 1*2 you can better do
a = 2

When you do
a = 2*2 you can probably better do
a = 2+2

When you do
a = 10000 * 2 it is (probably) not better to do

for i = 1 to 10000
a += 2
next

A hashtable is in my opinion made to use with a dictionary not to iterate
over in a reverse order.
http://msdn.microsoft.com/library/d...ectionsdictionarybaseclassdictionarytopic.asp

However, just my idea

:-))

Cor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top