By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
464,421 Members | 1,293 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 464,421 IT Pros & Developers. It's quick & easy.

Iterate over hashtabel in reverse order

P: n/a
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
Nov 21 '05 #1
Share this Question
Share on Google+
11 Replies

P: n/a
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
Nov 21 '05 #2

P: n/a
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

"Boni" <oilia@nospam> wrote in message
news:uw**************@TK2MSFTNGP10.phx.gbl...
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

Nov 21 '05 #3

P: n/a
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.
Nov 21 '05 #4

P: n/a

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" <oilia@nospam> wrote in message
news:uK**************@TK2MSFTNGP09.phx.gbl...
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

Nov 21 '05 #5

P: n/a
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" <mi*****@nohausystems.nl> schrieb im Newsbeitrag
news:uA**************@TK2MSFTNGP12.phx.gbl...

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" <oilia@nospam> wrote in message
news:uK**************@TK2MSFTNGP09.phx.gbl...
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


Nov 21 '05 #6

P: n/a
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?

"Boni" <oilia@nospam> schrieb im Newsbeitrag
news:ud**************@TK2MSFTNGP12.phx.gbl...
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.

Nov 21 '05 #7

P: n/a
Boni,

Why not just use a datatable, there is so much build in that?

Cor
Nov 21 '05 #8

P: n/a

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...9-a6cf9b7953f4
and see also on the bottom that it also supports Hashtables

regards

Michel Posseth [MCP]
"Boni" <oilia@nospam> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
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" <mi*****@nohausystems.nl> schrieb im Newsbeitrag
news:uA**************@TK2MSFTNGP12.phx.gbl...

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" <oilia@nospam> wrote in message
news:uK**************@TK2MSFTNGP09.phx.gbl...
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



Nov 21 '05 #9

P: n/a
Thanks, I will take a look in datatable.
"Cor Ligthert [MVP]" <no************@planet.nl> schrieb im Newsbeitrag
news:up**************@TK2MSFTNGP15.phx.gbl...
Boni,

Why not just use a datatable, there is so much build in that?

Cor

Nov 21 '05 #10

P: n/a
>> 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

"Boni" <oilia@nospam> schreef in bericht
news:eR**************@tk2msftngp13.phx.gbl...
Thanks, I will take a look in datatable.
"Cor Ligthert [MVP]" <no************@planet.nl> schrieb im Newsbeitrag
news:up**************@TK2MSFTNGP15.phx.gbl...
Boni,

Why not just use a datatable, there is so much build in that?

Cor


Nov 21 '05 #11

P: n/a
> 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/de...onarytopic.asp

However, just my idea

:-))

Cor
Nov 21 '05 #12

This discussion thread is closed

Replies have been disabled for this discussion.