Subject: | |
From: | |
Reply To: | |
Date: | Fri, 7 Apr 2006 11:32:45 +0100 |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
Hi Sean,
Thanks for your response. I didn't spot that Mason had a bag
implementation. From reading the comments in the code it seems to be
significantly faster than arrayLists.
Thanks
-Mike
Sean Luke wrote:
> Hi Michael. MASON doesn't have these built-in, but the following
> should do the trick. This is a place where Bag significantly
> outperforms ArrayList. Note that if you're using ParallelSequence or
> AsynchronousSteppable, you don't want to add objects to the list from
> within those threads as it'd create a race condition that's not checked
> for in the code below.
>
> Sean
>
> public class ExpandableSequence implements Steppable
> {
> public Bag steps;
>
> public ExpandableSequence(Bag steps) { this.steps = steps; }
> public ExpandableSequence() { this.steps = new Bag(); }
> public ExpandableSequence(Steppable[] steps) { this.steps = new Bag
> (steps); }
> public void step(SimState state)
> {
> for(int x=0;x<steps.numObjs; x++)
> ((Steppable)(steps.objs[x])).step(state);
> }
> }
>
>
> public class RandomExpandableSequence extends ExpandableSequence
> {
> public RandomExpandableSequence(Bag steps) { super(steps); }
> public RandomExpandableSequence() { super(); }
> public RandomExpandableSequence(Steppable[] steps) { super(steps); }
>
> public void step(SimState state)
> {
> synchronized(state.random)
> { steps.shuffle(state.random); }
> super.step(state);
> }
> }
>
>
> On Apr 4, 2006, at 11:04 AM, Michael Lees wrote:
>
>> Hi,
>>
>> This is my first post to the list, I've been using mason for a few
>> weeks now.
>>
>> I'm using the Sequence class but have found the steps array
>> inflexible in terms of adding new Steppables during execution.
>>
>> I've implemented an ExpandableSequence which uses an arrayList rather
>> than an array. I was wondering if something already exists for this?
>> I might use RandomSequence at some point, which would mean
>> re-implementing RandomSequence to extend ExpandableSequence.
This message has been checked for viruses but the contents of an attachment
may still contain software viruses, which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.
|
|
|