Re: Snapshot of List [Was: Re: sync on local variable]
On 3/26/2010 7:22 AM, Eric Sosman wrote:
On 3/25/2010 3:28 PM, Daniel Pitts wrote:
On 3/25/2010 11:06 AM, Eric Sosman wrote:
>> [... about iterating over a changing List ...]
to keep the
iteration self-consistent you might want to do something like
lock ALL_ROWS, grab a snapshot with toArray(), unlock, and run
the iteration on the (private, stable) snapshot.
>
I agree except, don't use toArray, use new ArrayList<Row>();
Not confrontational, just curious: Why prefer a new ArrayList
to an array? To me, it appears that an ArrayList is just an array
wrapped up in extra machinery, and I can't see that the machinery
adds any value for this usage. So, why pay the extra freight?
What am I missing?
Array is a relatively primitive concept. You're question is akin to
asking why use a "Date object" instead of an "int representing the
milliseconds since Jan 1, 1970".
Either one "works". Yes, the non-primitive has more "machinery", but
that isn't automatically a bad thing. The primitive looses semantic
meaning outside of its context, where a properly designed abstraction
maintains its semantics regardless of context.
Lists are also easier to work with, and work in more places.
--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>