in reply to Use Hash? Array? Still confused after all these years.
If you can easily map everything to the non-negative numbers integers from 0 through some length/count of the items you have, an array is great. Examples are an already sorted list of names. Want to know who's 5th, just do $names[5]. Arrays hold order very well, since they map to non-negative numbers and are kinda designed as a continuous data structure.
If you need arbitrary access to information where order or mapping isn't easy or makes sense, a hash is great. For instance, if I put my name, address and other personal info in a single structure, a hash rocks. $person{first_name} would give me a person's first_name.
To give the counter examples of when they suck, keeping a sorted list of people in a hash would be a little odd. I can do $person{5}, but what would $person{beer} mean in the context? Should it be allowed? It's just, strange.
Using an array for data that has no easy mapping to say, a function that is natural, an array kinda sucks. For instance, $person[0] being the first name, $person[1] being the last isn't as natural as $person{first_name}.
The rest is just engineering. They are both fairly fast, it's a matter of seeing which tool fits the job better.
Update: Wtf.. I used number when I meant integer. I'm an idiot. What i meant and typed were inconsistent. Thanks brian_d_foy.
----
Give me strength for today..
I will not talk it away..
Just for a moment..
It will burn through the clouds..
and shine down on me.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Use Hash? Array? Still confused after all these years.
by brian_d_foy (Abbot) on Jul 21, 2005 at 21:45 UTC | |
by exussum0 (Vicar) on Jul 21, 2005 at 22:05 UTC | |
by brian_d_foy (Abbot) on Jul 22, 2005 at 03:16 UTC | |
by exussum0 (Vicar) on Jul 22, 2005 at 11:41 UTC | |
by willyyam (Priest) on Jul 22, 2005 at 12:58 UTC | |
| |
by Anonymous Monk on Jul 22, 2005 at 14:12 UTC |