[Newbies] Iterating and removing items from OrderedCollections

Ian J Cottee icottee at bluefountain.com
Thu Sep 18 08:49:12 UTC 2008


Hi

It's emulating a conveyor belt. The 10 elements are slots on the belt
that a machine at one end can place items into. Every x seconds the
belt moves on one step. If the first machine hasn't put an item in the
slot, the slot is empty. At the other end, if the there's an item in
the slot when it gets to the front of the queue - that's given to the
next machine. So depending on what the loading machine is doing, you
can end up with gaps on the belt.

However, as it's a simulation the user may wish to change the size of
the belt - in which case I have to remove slots with nothing in them
(I can't remove slots which do have items on them for obvious
reasons).

On Thu, Sep 18, 2008 at 9:31 AM, Marcin Tustin <mm3 at zepler.net> wrote:
> Why are there nils in the middle of the queue?
>
> The obvious thing is to use a linked structure or one which has amortised
> constant time addition of elements, and simply count how many items have
> been added to the queue to limit its size.
>
>
> On 9/18/08, Ian J Cottee <icottee at bluefountain.com> wrote:
>>
>> Hello all
>>
>> I've got an OrderedCollection that is normally a fixed size (let's say
>> 10 elements). Each element in the collection is another an object or
>> nil. So for example, at a point in time it might look like
>>
>> [nil, nil, Object, nil, Object, Object, nil, nil, Object, nil]
>>
>> What I want is to be able to resize the collection. Making it bigger
>> is no problem for me, I can just add nils to the end of the
>> collection. Making it smaller is involving a little bit of pain. I can
>> see ways of doing it but theyr'e not elegant and I'm sure there are
>> cleaner ways of doing it. If I made the above queue smaller I'd
>> basically remove the nils starting from the beginning. So a resize to
>> size 7 would give me
>>
>> [ Object, Object, Object, nil, nil, Object, nil]
>>
>> i.e. the first three nils have been removed.
>>
>> Does anybody have any comments on appropriate code to handle this? If
>> not, I'll go with the ugly stuff but it would be nice to know the
>> correct SmallTalk way.
>>
>> Many thanks for any suggestions.
>>
>> Ian
>> _______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
>


More information about the Beginners mailing list